60
OpenShift Container Platform 3.11 Service Mesh のインストール OpenShift Container Platform 3.11 Service Mesh インストールガイド Last Updated: 2020-01-05

OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

OpenShift Container Platform 311

Service Mesh のインストール

OpenShift Container Platform 311 Service Mesh インストールガイド

Last Updated 2020-01-05

OpenShift Container Platform 311 Service Mesh のインストール

OpenShift Container Platform 311 Service Mesh インストールガイド

法律上の通知法律上の通知

Copyright copy 2019 Red Hat Inc

The text of and illustrations in this document are licensed by Red Hat under a Creative CommonsAttributionndashShare Alike 30 Unported license (CC-BY-SA) An explanation of CC-BY-SA isavailable athttpcreativecommonsorglicensesby-sa30 In accordance with CC-BY-SA if you distribute this document or an adaptation of it you mustprovide the URL for the original version

Red Hat as the licensor of this document waives the right to enforce and agrees not to assertSection 4d of CC-BY-SA to the fullest extent permitted by applicable law

Red Hat Red Hat Enterprise Linux the Shadowman logo the Red Hat logo JBoss OpenShiftFedora the Infinity logo and RHCE are trademarks of Red Hat Inc registered in the United Statesand other countries

Linux reg is the registered trademark of Linus Torvalds in the United States and other countries

Java reg is a registered trademark of Oracle andor its affiliates

XFS reg is a trademark of Silicon Graphics International Corp or its subsidiaries in the United Statesandor other countries

MySQL reg is a registered trademark of MySQL AB in the United States the European Union andother countries

Nodejs reg is an official trademark of Joyent Red Hat is not formally related to or endorsed by theofficial Joyent Nodejs open source or commercial project

The OpenStack reg Word Mark and OpenStack logo are either registered trademarksservice marksor trademarksservice marks of the OpenStack Foundation in the United States and othercountries and are used with the OpenStack Foundations permission We are not affiliated withendorsed or sponsored by the OpenStack Foundation or the OpenStack community

All other trademarks are the property of their respective owners

概要概要

OpenShift での Service Mesh インストールのスタートガイド

目次目次

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール11 製品概要12 前提条件13 SERVICE MESH のインストール14 マルチテナントサービスメッシュのインストール15 インストール後のタスク16 アプリケーションの要件17 チュートリアル18 RED HAT OPENSHIFT SERVICE MESH の削除19 RED HAT OPENSHIFT SERVICE MESH のアップグレード110 3SCALE ISTIO ADAPTER

338

1024262730474848

目次目次

1

OpenShift Container Platform 311 Service Mesh のインストールのインストール

2

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 2: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

OpenShift Container Platform 311 Service Mesh のインストール

OpenShift Container Platform 311 Service Mesh インストールガイド

法律上の通知法律上の通知

Copyright copy 2019 Red Hat Inc

The text of and illustrations in this document are licensed by Red Hat under a Creative CommonsAttributionndashShare Alike 30 Unported license (CC-BY-SA) An explanation of CC-BY-SA isavailable athttpcreativecommonsorglicensesby-sa30 In accordance with CC-BY-SA if you distribute this document or an adaptation of it you mustprovide the URL for the original version

Red Hat as the licensor of this document waives the right to enforce and agrees not to assertSection 4d of CC-BY-SA to the fullest extent permitted by applicable law

Red Hat Red Hat Enterprise Linux the Shadowman logo the Red Hat logo JBoss OpenShiftFedora the Infinity logo and RHCE are trademarks of Red Hat Inc registered in the United Statesand other countries

Linux reg is the registered trademark of Linus Torvalds in the United States and other countries

Java reg is a registered trademark of Oracle andor its affiliates

XFS reg is a trademark of Silicon Graphics International Corp or its subsidiaries in the United Statesandor other countries

MySQL reg is a registered trademark of MySQL AB in the United States the European Union andother countries

Nodejs reg is an official trademark of Joyent Red Hat is not formally related to or endorsed by theofficial Joyent Nodejs open source or commercial project

The OpenStack reg Word Mark and OpenStack logo are either registered trademarksservice marksor trademarksservice marks of the OpenStack Foundation in the United States and othercountries and are used with the OpenStack Foundations permission We are not affiliated withendorsed or sponsored by the OpenStack Foundation or the OpenStack community

All other trademarks are the property of their respective owners

概要概要

OpenShift での Service Mesh インストールのスタートガイド

目次目次

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール11 製品概要12 前提条件13 SERVICE MESH のインストール14 マルチテナントサービスメッシュのインストール15 インストール後のタスク16 アプリケーションの要件17 チュートリアル18 RED HAT OPENSHIFT SERVICE MESH の削除19 RED HAT OPENSHIFT SERVICE MESH のアップグレード110 3SCALE ISTIO ADAPTER

338

1024262730474848

目次目次

1

OpenShift Container Platform 311 Service Mesh のインストールのインストール

2

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 3: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

法律上の通知法律上の通知

Copyright copy 2019 Red Hat Inc

The text of and illustrations in this document are licensed by Red Hat under a Creative CommonsAttributionndashShare Alike 30 Unported license (CC-BY-SA) An explanation of CC-BY-SA isavailable athttpcreativecommonsorglicensesby-sa30 In accordance with CC-BY-SA if you distribute this document or an adaptation of it you mustprovide the URL for the original version

Red Hat as the licensor of this document waives the right to enforce and agrees not to assertSection 4d of CC-BY-SA to the fullest extent permitted by applicable law

Red Hat Red Hat Enterprise Linux the Shadowman logo the Red Hat logo JBoss OpenShiftFedora the Infinity logo and RHCE are trademarks of Red Hat Inc registered in the United Statesand other countries

Linux reg is the registered trademark of Linus Torvalds in the United States and other countries

Java reg is a registered trademark of Oracle andor its affiliates

XFS reg is a trademark of Silicon Graphics International Corp or its subsidiaries in the United Statesandor other countries

MySQL reg is a registered trademark of MySQL AB in the United States the European Union andother countries

Nodejs reg is an official trademark of Joyent Red Hat is not formally related to or endorsed by theofficial Joyent Nodejs open source or commercial project

The OpenStack reg Word Mark and OpenStack logo are either registered trademarksservice marksor trademarksservice marks of the OpenStack Foundation in the United States and othercountries and are used with the OpenStack Foundations permission We are not affiliated withendorsed or sponsored by the OpenStack Foundation or the OpenStack community

All other trademarks are the property of their respective owners

概要概要

OpenShift での Service Mesh インストールのスタートガイド

目次目次

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール11 製品概要12 前提条件13 SERVICE MESH のインストール14 マルチテナントサービスメッシュのインストール15 インストール後のタスク16 アプリケーションの要件17 チュートリアル18 RED HAT OPENSHIFT SERVICE MESH の削除19 RED HAT OPENSHIFT SERVICE MESH のアップグレード110 3SCALE ISTIO ADAPTER

338

1024262730474848

目次目次

1

OpenShift Container Platform 311 Service Mesh のインストールのインストール

2

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 4: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

目次目次

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール11 製品概要12 前提条件13 SERVICE MESH のインストール14 マルチテナントサービスメッシュのインストール15 インストール後のタスク16 アプリケーションの要件17 チュートリアル18 RED HAT OPENSHIFT SERVICE MESH の削除19 RED HAT OPENSHIFT SERVICE MESH のアップグレード110 3SCALE ISTIO ADAPTER

338

1024262730474848

目次目次

1

OpenShift Container Platform 311 Service Mesh のインストールのインストール

2

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 5: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

OpenShift Container Platform 311 Service Mesh のインストールのインストール

2

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 6: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

第1章 RED HAT OPENSHIFT SERVICE MESH のインストール

11 製品概要

111 Red Hat OpenShift Service Mesh の概要

重要重要

Red Hat OpenShift Service Mesh の本リリースはテクノロジープレビューリリースでのみ利用可能ですテクノロジープレビューリリースはRed Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされておらず機能的に完全でない可能性がありRed Hat では実稼働環境での使用を推奨しませんクラスターで Red Hat OpenShiftService Mesh を使用するとOpenShift 全体がテクノロジープレビューとしてレンダリングされます (サポートされていない状態)これらの機能は近々発表予定の製品機能をリリースに先駆けてご提供することによりお客様は機能性をテストし開発プロセス中にフィードバックをお寄せいただくことができます詳細は「テクノロジプレビュー機能のサポート範囲」を参照してください

サービスメッシュは分散したマイクロサービスアーキテクチャーの複数のアプリケーションを構成するマイクロサービスのネットワークでありマイクロサービス間の対話を可能にしますサービスメッシュのサイズとおよび複雑性が増大するとこれを把握し管理することがより困難になる可能性があります

オープンソースの Istio プロジェクトをベースとする Red Hat OpenShift Service Mesh はサービスコードに変更を加えずに既存の分散したアプリケーションに透過的な層を追加しますRed HatOpenShift Service Mesh サポートは特別なサイドカープロキシーをマイクロサービス間のネットワーク通信をすべてインターセプトするメッシュ内の関連サービスにデプロイすることでサービスに追加できますコントロールプレーンの機能を使用してサービスメッシュを設定し管理します

Red Hat OpenShift Service Mesh により以下を提供するデプロイされたサービスのネットワークを簡単に作成できます

検出

負荷分散

サービス間の認証

障害回復

メトリクス

モニタリング

サービスメッシュは以下を含むより複雑な運用機能も提供します

AB テスト

カナリアリリース

レート制限

アクセス制御

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

3

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 7: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

エンドツーエンド認証

112 Red Hat OpenShift Service Mesh アーキテクチャー

Red Hat OpenShift Service Mesh はデータプレーンとコントロールプレーンに論理的に分割されます

データプレーン はサイドカーコンテナーとしてデプロイされたインテリジェントプロキシーのセットですこれらのプロキシーはサービスメッシュ内のマイクロサービス間の受信および送信ネットワーク通信をすべてインターセプトし制御しますサイドカープロキシーはMixer汎用ポリシーおよび Telemetry ハブとも通信します

Envoy プロキシーはサービスメッシュ内の全サービスの受信トラフィックおよび送信トラフィックをすべてインターセプトしますEnvoy は同じ Pod の関連するサービスに対してサイドカーコンテナーとしてデプロイされます

コントロールプレーンはプロキシーがトラフィックをルーティングするように管理および設定しMixer がポリシーを適用しTelemetry を収集するように設定します

Mixer はアクセス制御と使用ポリシー (承認レート制限クォータ認証および要求トレースなど) を適用しEnvoy プロキシーやその他のサービスから Telemetry データを収集します

Pilot はランタイム時にプロキシーを設定しますPilot はEnvoy サイドカーコンテナーのサービス検出インテリジェントルーティング (例 AB テストまたはカナリアデプロイメント)のトラフィック管理機能および回復性 (タイムアウト再試行サーキットブレーカー) を提供します

Citadel は証明書を発行しローテーションしますCitadel は組み込み型のアイデンティティーおよび認証情報の管理機能を使用して強力なサービス間認証およびエンドユーザー認証を提供しますCitadel を使用してサービスメッシュで暗号化されていないトラフィックをアップグレードできますOperator はCitadel を使用してネットワーク制御ではなくサービスアイデンティティーに基づいてポリシーを適用することができます

Galley はサービスメッシュ設定を取り込みその後設定を検証し処理し配布しますGalley は他のサービスメッシュコンポーネントが OpenShift Container Platform からユーザー設定の詳細を取得できないようにします

Red Hat OpenShift Service Mesh はistio-operator を使用してコントロールプレーンのインストールも管理しますOperator はOpenShift クラスターで共通アクティビティーを実装し自動化できるソフトウェアの構成要素ですこれはコントローラーとして動作しクラスター内の必要なオブジェクトの状態を設定したり変更したりできます

113 サポートされる設定

以下はRed Hat OpenShift Service Mesh 012TechPreview で唯一サポートされている設定です

Red Hat OpenShift Container Platform バージョン 311

Red Hat OpenShift Container Platform バージョン 41

注記注記

OpenShift Online および OpenShift Dedicated は Red Hat OpenShift Service Mesh012TechPreview に対してはサポートされていません

OpenShift Container Platform 311 Service Mesh のインストールのインストール

4

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 8: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

デプロイメントはフェデレーションされていない単一の OpenShift Container Platform クラスターに含まれる必要があります

Red Hat OpenShift Service Mesh の本リリースはOpenShift Container Platform x86_64 でのみ利用できます

Red Hat OpenShift Service Mesh は外部プロバイダーを持たないフラットネットワークとして構成された OpenShift Container Platform Software Defined Networking (SDN) にのみ適しています

本リリースではすべてのサービスメッシュコンポーネントが動作する OpenShift クラスターに含まれている設定のみをサポートしていますクラスター外にあるマイクロサービスの管理やマルチクラスターシナリオにおけるマイクロサービスの管理はサポートしていません

Kiali の可観測性コンソールは ChromeEdgeFirefoxまたは Safari ブラウザーの 2 つの最新リリースでのみサポートされています

このテクノロジープレビュー機能のサポートについての詳細はRed Hat ナレッジベースの記事を参照してください

114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する

Red Hat OpenShift Service Mesh のインストールは複数の点でアップストリームの Istio コミュニティーインストールとは異なりますRed Hat OpenShift Service Mesh の変更点は問題の解決追加機能の提供OpenShift へのデプロイ時の差異の処理を実行するために必要になることがあります

Red Hat OpenShift Service Mesh の現行リリースは以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります

1141 マルチテナントインストールマルチテナントインストール

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

Red Hat OpenShift Service Mesh ではマルチテナントコントロールプレーンのインストールを設定しサービスメッシュにアクセスできる namespace を指定しサービスメッシュを他のコントロールプレーンインスタンスから分離することができます

1142 自動的な挿入自動的な挿入

アップストリームの Istio コミュニティーインストールはラベル付けした namespace にサイドカーコンテナーを自動的に挿入します

Red Hat OpenShift Service Mesh はサイドカーコンテナーを namespace に自動的に挿入しませんが自動的なサイドカーコンテナーの挿入についてのセクションで説明されているようにsidecar istioioinject アノテーションを指定する必要があります

1143 ロールベースアクセス制御機能ロールベースアクセス制御機能

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

5

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 9: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

ロールベースアクセス制御機能 (RBAC) はサービスへのアクセスを制御するために使用できるメカニズムを提供しますユーザー名やプロパティーのセットを指定してサブジェクトを特定しそれに応じてアクセス制御を適用することができます

アップストリームの Istio コミュニティーインストールにはヘッダーの完全一致の実行ヘッダーのワイルドカードの一致の実行または特定のプレフィックスまたはサフィックスを含むヘッダーの有無をチェックするオプションが含まれます

アップストリームアップストリーム Istio コミュニティーの要求ヘッダーのマッチング例コミュニティーの要求ヘッダーのマッチング例

Red Hat OpenShift Service Mesh は正規表現を使用して要求ヘッダーと一致させる機能を拡張しますrequestregexheaders のプロパティーキーを正規表現で指定します

Red Hat OpenShift Service Mesh の正規表現による要求ヘッダーのマッチングの正規表現による要求ヘッダーのマッチング

1144 自動ルート作成自動ルート作成

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する場合にはこれが ServiceMeshControlPlane で無効にされていることを確認します

Red Hat OpenShift Service Mesh は Istio ゲートウェイの OpenShift ルートを自動的に管理しますIstio ゲートウェイがサービスメッシュで作成され更新され削除される場合に一致する OpenShiftルートが作成され更新され削除されます

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestheaders[ltheadergt] value

apiVersion rbacistioiov1alpha1kind ServiceRoleBindingmetadata name httpbin-client-binding namespace httpbinspec subjects - user clusterlocalnsistio-systemsaistio-ingressgateway-service-account properties requestregexheaders[ltheadergt] ltregular expressiongt

OpenShift Container Platform 311 Service Mesh のインストールのインストール

6

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 10: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

以下のゲートウェイが作成される場合は次のコマンドを実行します

以下の OpenShift ルートが自動的に作成されます

$ oc -n istio-system get routesNAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgateway1-lvlfn bookinfoexamplecom istio-ingressgateway ltallgt Nonegateway1-scqhv wwwbookinfocom istio-ingressgateway ltallgt None

このゲートウェイが削除されるとRed Hat OpenShift Service Mesh はルートを削除します

注記注記

手動で作成されたルートはサービスメッシュによって管理されません

11441 catch-all ドメイン

Red Hat OpenShift Service Mesh は catch-all またはワイルドカードドメインをサポートしませんサービスメッシュがゲートウェイ定義で catch-all ドメインを見つけるとRed Hat OpenShift ServiceMesh はルートを作成しますがデフォルトのホスト名を作成するには OpenShift に依存する必要がありますサービスメッシュが作成するルートは catch-all ルートではなく ltroute-namegt[-ltnamespacegt]ltsuffixgt 構造のあるホスト名を持ちます

11442 サブドメイン

サブドメインはサポートされていますがOpenShift ではデフォルトで有効にされていませんRedHat OpenShift Service Mesh はサブドメインを持つルートを作成しますがこれは OpenShift でサブドメインを有効にした後にのみ動作します詳細はワイルドカードルートに関する OpenShift ドキュメントを参照してください

11443 TLS

OpenShift ルートは TLS をサポートするように設定されます

注記注記

apiVersion networkingistioiov1alpha3kind Gatewaymetadata name gateway1spec selector istio ingressgateway servers - port number 80 name http protocol HTTP hosts - wwwbookinfocom - bookinfoexamplecom

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

7

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 11: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

注記注記

Red Hat OpenShift Service Mesh によって作成されるすべての OpenShift ルートは istio-system namespace に置かれます

1145 OpenSSL

Red Hat OpenShift Service Mesh ではBoringSSL を OpenSSL に置き換えますOpenSSL はSecure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーですRed Hat OpenShift Service Mesh Proxy バイナリーは基礎となる UBI8 オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto)を動的にリンクします

1146 Container Network Interface (CNI)

Red Hat OpenShift Service Mesh には CNI が含まれアプリケーション Pod ネットワーキングを設定する代替の方法が提供されますCNI を有効にする際にinit-container ネットワーク設定を置き換えますこれによりSCC (Security Context Constraints) を変更してサービスアカウントおよびnamespace に追加の特権を付与する必要がなくなります

115 Red Hat OpenShift Service Mesh のインストールの概要

Red Hat OpenShift Service Mesh のインストールプロセスでは以下の 4 つの異なるプロジェクト(namespace) を作成します

istio-operator プロジェクト (1 Pod)

istio-system プロジェクト (17 Pod)

kiali-operator プロジェクト (1 Pod)

observability プロジェクト (1 Pod)

最初に Kubernetes Operator を作成しますこの Operator はサービスメッシュコンポーネントのデプロイメント更新および削除を管理するカスタムリソースを定義し監視します

カスタムリソースファイルの定義方法によってはサービスメッシュのインストール時に以下のコンポーネントのいずれかをインストールできます

Red Hat OpenShift Service Mesh オープンソースの Istio プロジェクトをベースとしアプリケーションを構成するマイクロサービスを接続し保護し制御し観察することができます

Jaeger オープンソース Jaeger プロジェクトをベースとしトレースを実行して複雑な分散システムでトランザクションを監視しトラブルシューティングできます

Kiali オープンソースの Kiali プロジェクトをベースとしておりサービスメッシュの可観測性を提供しますKiali を使用すると単一のコンソールで設定を表示しトラフィックを監視しトレースの表示と分析を実行できます

12 前提条件

121 Red Hat OpenShift Service Mesh のインストールの前提条件

Red Hat OpenShift Service Mesh をインストールする前に以下の前提条件を満たす必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

8

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 12: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

お使いの Red Hat アカウントに有効な OpenShift Container Platform サブスクリプションを用意しますサブスクリプションをお持ちでない場合は営業担当者にお問い合わせください

OpenShift Container Platform バージョン 311 以降をインストールします

システムおよび環境要件についての詳細はOpenShift Container Platform ドキュメントを参照してください

OpenShift Container Platform バージョンに一致する OpenShift Container Platform コマンドラインユーティリティーのバージョン (oc クライアントツール) をインストールしこれをパスに追加します

インストール手順についてはOpenShift Container Platform のコマンドラインリファレンスについてのドキュメントを参照してください

1211 OpenShift Container Platform インストールの準備インストールの準備

サービスメッシュを OpenShift Container Platform インストールにインストールする前にマスター設定およびそれぞれのスケジュール可能なノードを変更する必要がありますこれらの変更はサービスメッシュで必要とされる機能を有効にしElasticsearch 機能が正常に機能することを確認します

1212 ノード設定の更新ノード設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはノード設定の更新は必要ありません

Elasticsearch アプリケーションを実行するには各ノードのカーネル設定に変更を加える必要がありますこの変更は sysctl サービスによって処理されます

OpenShift Container Platform インストール内の各ノードでこれらの変更を行います

1 etcsysctld99-elasticsearchconf という名前のファイルを以下の内容で作成します

vmmax_map_count = 262144

2 以下のコマンドを実行します

$ sysctl vmmax_map_count=262144

1213 コンテナーレジストリーの更新コンテナーレジストリーの更新

注記注記

OpenShift Container Platform 311 をオンプレミスで実行している場合は以下の手順に従って registryredhatio へのアクセスを設定します

プライベート registryredhatio に OpenShift Container Platform 311 からアクセスしインストールプロセス用の Red Hat OpenShift Service Mesh イメージをプルします

1 以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

9

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 13: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

$ docker login registryredhatio

2 これによりユーザー名とパスワードを求めるプロンプトが出されます

3 正常にログインすると~dockerconfigjson は以下の内容で作成されます

auths registryredhatio auth XXXXXXXXXXXXXXXXXX

4 各ノードで varliborigindocker ディレクトリーを作成します

5 各ノードで dockerconfigjson ファイルを varliborigindocker ディレクトリーにコピーします

13 SERVICE MESH のインストール

131 Red Hat OpenShift Service Mesh のインストール

Service Mesh のインストールにはOperator のインストールその後にコントロールプレーンをデプロイするためのカスタムリソース定義ファイルの作成および管理が必要になります

注記注記

Red Hat OpenShift Service Mesh 09TechPreview 以降Mixer のポリシーの適用はデフォルトで無効にされていますポリシータスクを実行するにはこれを有効にする必要がありますMixer ポリシーの適用を有効にする方法についてはMixer ポリシーの適用の更新について参照してください

注記注記

マルチテナントコントロールプレーンのインストールはOpenShift Container Platformの再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed Hat OpenShift Service Mesh012TechPreview 以降のデフォルト設定です

1311 Operator のインストールのインストール

サービスメッシュのインストールプロセスではOperator が導入されこれにより istio-operatornamespace 内でコントロールプレーンのインストールが管理されますこの Operator はコントロールプレーンのデプロイメント更新および削除に関連するカスタムリソースを定義し監視します

Red Hat OpenShift Service Mesh 012TechPreview 以降ではRed Hat OpenShift Service MeshOperator がコントロールプレーンをインストールするにはJaeger Operator および Kiali Operator をインストールをする必要があります

13111 Jaeger Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の Jaeger

OpenShift Container Platform 311 Service Mesh のインストールのインストール

10

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 14: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の JaegerOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行して Jaeger Operator をインストールします

$ oc new-project observability create the project for the jaeger operator$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc create -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml

13112 Kiali Operator のインストール

コントロールプレーンをインストールするにはRed Hat OpenShift Service Mesh Operator の KialiOperator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してKiali Operator をインストールします

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --operator-image-version v100 --operator-watch-namespace --accessible-namespaces --operator-install-kiali false

13113 Red Hat OpenShift Service Mesh Operator のインストール

注記注記

Red Hat OpenShift Service Mesh Operator をインストールする前にJaeger Operatorおよび Kiali Operator をインストールする必要があります

1 クラスター管理者として OpenShift Container Platform にログインします

2 istio-operator および istio-system namespace が存在しない場合これらのコマンドを実行して namespace を作成します

$ oc new-project istio-operator$ oc new-project istio-system

3 以下のコマンドを実行してRed Hat OpenShift Service Mesh Operator をインストールしますクラスターにアクセスできる場合は任意のホストからこれを実行できます

$ oc apply -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

1312 Operator インストールの検証インストールの検証

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

11

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 15: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

1 クラスター管理者として OpenShift Container Platform にログインします

2 以下のコマンドを実行してOperator が正常にインストールされていることを確認します

$ oc get pods -n istio-operator

3 Operator が実行状態になるとこれが正常にインストールされていることになります

NAME READY STATUS RESTARTS AGEistio-operator-5cd6bcf645-fvb57 11 Running 0 1h

1313 カスタムリソースファイルの作成カスタムリソースファイルの作成

注記注記

istio-system プロジェクトはService Mesh ドキュメント全体でサンプルとして使用されますが必要に応じて他の namespace を使用できます

Service Mesh コントロールプレーンをデプロイするにはカスタムリソースをデプロイする必要があります独自の API を Kubernetes プロジェクトまたはクラスターに導入する必要のあるカスタムリソースプロジェクトパラメーターを定義しオブジェクトを作成するカスタムのリソース yaml ファイルを作成しますこの例のカスタムリソース yaml ファイルにはサポートされるすべてのパラメーターが含まれこれにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift ServiceMesh 012TechPreview イメージがデプロイされます

重要重要

3scale の Istio Adapter はカスタムリソースファイルでデプロイされ設定されますまた稼働している 3scale アカウント (SaaS または On-Premises) が必要になります

istio-installationyaml の詳細例の詳細例

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata name basic-install spec

threeScale enabled false

istio global proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi multitenant true

OpenShift Container Platform 311 Service Mesh のインストールのインストール

12

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 16: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

1314 カスタムリソースパラメーターカスタムリソースパラメーター

以下の例はRed Hat OpenShift Service Mesh でサポートされるカスタムリソースパラメーターの使用を示し表はサポートされているパラメーターに関する追加情報を示しています

重要重要

CPUメモリーPod の数などのカスタムリソースパラメーターを使用して Red HatOpenShift Service Mesh に設定するリソースはOpenShift クラスターの設定をベースとしています現在のクラスター設定で利用可能なリソースに基づいてこれらのパラメーターを設定します

13141 Istio グローバルの例

注記注記

3scale Istio Adapter が機能するようするにはdisablePolicyChecks は false である必要があります

gateways istio-egressgateway autoscaleEnabled false istio-ingressgateway autoscaleEnabled false ior_enabled false

mixer policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

pilot autoscaleEnabled false traceSampling 1000

kiali dashboard user admin passphrase admin tracing enabled true

istio global hub `maistra` or `registryredhatioopenshift-istio-tech-preview`

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

13

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 17: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

注記注記

Pod 内のコンテナーの CPU およびメモリーリソースを指定する方法についての詳細はOpenShift ドキュメントのコンピュートリソースについて参照してください

表11 グローバルパラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

disablePolicyChecks このブール値はポリシーチェックを有効にするかどうかを示します

truefalse true

policyCheckFailOpen

このブール値はMixerポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します

truefalse false

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

0120

Hub Operator が Istio イメージをプルするために使用するハブ

有効なイメージリポジトリーです

maistra または registryredhatioopenshift-istio-tech-preview

mTLS これはデフォルトでサービス間での MutualTransport LayerSecurity (mTLS) を有効にするかどうかを制御します

truefalse false

tag 0120 proxy resources requests cpu 100m memory 128Mi limits cpu 500m memory 128Mi mtls enabled false disablePolicyChecks true policyCheckFailOpen false imagePullSecrets - MyPullSecret

OpenShift Container Platform 311 Service Mesh のインストールのインストール

14

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 18: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

imagePullSecret Istio イメージを提供するレジストリーへのアクセスがセキュアな場合ここに imagePullSecretを一覧表示します

redhat-registry-pullsecret または quay-pullsecret

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

表12 プロキシーパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Envoy プロキシーに要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

100m

memory Envoy プロキシー用に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

制限 cpu Envoy プロキシー用に要求されるCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

2000m

memory 使用が許可されているメモリーEnvoy プロキシーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

128Mi

13142 Container Network Interface (CNI) の例

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

apiVersion maistraiov1 kind ServiceMeshControlPlane metadata

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

15

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 19: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

表13 CNI パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13143 Istio ゲートウェイの例

警告警告

自動ルート作成は現在マルチテナンシーでは機能しませんマルチテナントインストールの場合ior_enabled を false に設定します

表14 Istio ゲートウェイパラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

istio-egressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

name basic-install spec

istio istio_cni enabled true

gateways istio-egressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 istio-ingressgateway autoscaleEnabled false autoscaleMin 1 autoscaleMax 5 ior_enabled false

OpenShift Container Platform 311 Service Mesh のインストールのインストール

16

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 20: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

autoscaleMax autoscaleEnabled設定に基づいてegress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

istio-ingressgateway

autoscaleEnabled

このパラメーターは自動スケーリングを有効にします

truefalse true

autoscaleMin autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

1

autoscaleMax autoscaleEnabled設定に基づいてingress ゲートウェイにデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能なPod 数

5

ior_enabled このパラメーターはIstio ルートがOpenShift に自動的に設定されるかどうかを制御します

truefalse true

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13144 Istio Mixer の例

表15 Istio Mixer ポリシーパラメーター

mixer enabled true policy autoscaleEnabled false

telemetry autoscaleEnabled false resources requests cpu 100m memory 1G limits cpu 500m memory 4G

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

17

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 21: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより Mixer が有効にされます

truefalse true

autoscaleEnabled これは自動スケーリングを有効にするかどうかを制御します小規模な環境ではこのパラメーターを無効にします

truefalse true

autoscaleMin autoscaleEnabled 設定に基づいてデプロイするPod の最小数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

1

autoscaleMax autoscaleEnabled 設定に基づいてデプロイするPod の最大数

ご使用の環境設定に基づく有効な割り当て可能な Pod 数

5

表16 Istio Mixer Telemetry パラメーター

タイプタイプ パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

リソース cpu Mixer Telemetry に要求される CPU リソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

1000m

memory Mixer Telemetry に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

1G

制限 cpu Mixer Telemetry の使用が許可されたCPU リソースの最大パーセンテージ

ご使用の環境設定に基づくミリコア単位の CPU リソース

4800m

memory Mixer Telemetry の使用が許可されたメモリーの最大量

ご使用の環境設定に基づく利用可能なメモリー (バイト単位)

4G

13145 Istio Pilot の例

pilot resources requests

OpenShift Container Platform 311 Service Mesh のインストールのインストール

18

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 22: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

表17 Istio Pilot パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

cpu Pilot に要求される CPUリソースのパーセンテージ

ご使用の環境設定に基づくミリコア単位のCPU リソース

500m

memory Pilot に要求されるメモリー量

ご使用の環境設定に基づく利用可能なメモリー(バイト単位)

2048Mi

traceSampling この値は無作為のサンプリングの発生頻度を制御します注 開発またはテストの場合はこの値を増やします

有効な数字 10

13146 トレーシングおよび Jaeger の例

表18 トレーシングおよび Jaeger パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これにより環境でのトレーシングが可能となります

truefalse true

Hub Operator が Jaeger イメージをプルするために使用するハブ

有効なイメージリポジトリーです

jaegertracing または registryredhatioopenshift-istio-tech-preview

tag Operator が Jaeger イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

1131

template Jaeger に使用するデプロイメントテンプレート

テンプレートタイプの名前

all-in-one production-elasticsearch

cpu 100m autoscaleEnabled false traceSampling 1000

tracing enabled false jaeger tag 1131 template all-in-one agentStrategy DaemonSet

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

19

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 23: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

agentStrategy Jaeger エージェントを各コンピュートノードにデプロイします

DaemonSet (必要な場合)

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13147 Kiali の例

注記注記

Kiali は Oath 認証およびダッシュボードのユーザーをサポートしますデフォルトでKiali は OpenShift Oauth を使用しますがダッシュボードのユーザーとパスフレーズを追加して Dashboard ユーザーを有効にすることができます

表19 Kiali パラメーター

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

enabled これによりサービスメッシュで Kiali を有効または無効にできますKiali はデフォルトでインストールされますKialiをインストールする必要がない場合はenabled の値を false に変更します

truefalse true

Hub Operator が Kiali イメージをプルするために使用するハブ

有効なイメージリポジトリーです

kiali または registryredhatioopenshift-istio-tech-preview

tag Operator が Istio イメージをプルするために使用するタグ

有効なコンテナーイメージタグです

100

user Kiali コンソールにアクセスするためのユーザー名注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードユーザー名

なし

kiali enabled true hub kiali tag v100 dashboard user admin passphrase admin

OpenShift Container Platform 311 Service Mesh のインストールのインストール

20

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 24: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

passphrase Kiali コンソールへのアクセスに使用されるパスワード注 これはOpenShift アカウントとは関連しません

有効な Kiali ダッシュボードパスフレーズ

なし

パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値

13148 3scale の例

表110 3scale パラメーター

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

enabled 3scale アダプターを使用するかどうか

truefalse false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します

有効なポート番号 3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します

debuginfowarnerrorまたは none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します

truefalse true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します

truefalse false

threeScale enabled false PARAM_THREESCALE_LISTEN_ADDR 3333 PARAM_THREESCALE_LOG_LEVEL info PARAM_THREESCALE_LOG_JSON true PARAM_THREESCALE_LOG_GRPC false PARAM_THREESCALE_REPORT_METRICS true PARAM_THREESCALE_METRICS_PORT 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS 60

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

21

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 25: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集されPrometheus に報告されるかどうかを制御します

truefalse true

PARAM_THREESCALE_METRICS_PORT

3scale metrics エンドポイントをスクラップできるポートを設定します

有効なポート番号 8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)

時間 (秒単位) 300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位) 180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数キャッシュを無効にするには 0 に設定します

有効な数字 1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字 1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにしますこの有効化は推奨されていません

truefalse false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します

時間 (秒単位) 10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+-10 のジッター) を設定します

時間 (秒単位) 60

パラメーターパラメーター 説明説明 値値 デフォルトデフォルト

1315 マルチテナントインストールの設定マルチテナントインストールの設定

OpenShift Container Platform 311 Service Mesh のインストールのインストール

22

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 26: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント RedHat OpenShift Service Mesh のインストール」の章を参照してください

1316 Mixer ポリシー適用の更新ポリシー適用の更新

以前のバージョンの Red Hat OpenShift Service Mesh ではMixer のポリシーの適用がデフォルトで有効にされていましたMixer ポリシーの適用はデフォルトで無効になりましたポリシータスクを実行する前にこれを有効にする必要があります

1 以下のコマンドを実行して現在の Mixer ポリシー適用のステータスを確認します

$ oc get cm -n istio-system istio -o jsonpath=datamesh | grep disablePolicyChecks

2 disablePolicyChecks true の場合Service Mesh ConfigMap を編集します

$ oc edit cm -n istio-system istio

3 ConfigMap 内で disablePolicyChecks true を見つけ値を false に変更します

4 設定を保存してエディターを終了します

5 Mixer ポリシー適用ステータスを再度チェックしてfalse に設定されていることを確認します

1317 コントロールプレーンのデプロイコントロールプレーンのデプロイ

OpenShift Container Platform 41 の導入によりホストのネットワーク機能はiptables ではなくnftables をベースとするようになりましたこの変更はサービスメッシュアプリケーションコンポーネントの初期化に影響しますサービスメッシュはサービスメッシュのネットワークコンポーネントを正常に初期化するためにOpenShift が実行されているホストオペレーティングシステムを認識する必要があります

注記注記

OpenShift Container Platform 41 を使用している場合はこれらの変更をカスタムリソースに加える必要はありません

OpenShift インストールが Red Hat Enterprise Linux (RHEL) 7 ホストにデプロイされている場合カスタムリソースは以下を含む RHEL 7 proxy-init コンテナーイメージを明示的に要求する必要があります

RHEL 7 ホストのホストの proxy-init コンテナーの有効化コンテナーの有効化

apiVersion maistraiov1 kind ServiceMeshControlPlane spec istio global proxy_init image proxy-init

作成したカスタムリソース定義ファイルを使用してサービスメッシュコントロールプレーンをデプロイします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

23

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 27: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

1 istio-installationyaml という名前のカスタムリソース定義ファイルを作成します

2 以下のコマンドを実行してコントロールプレーンをデプロイします

$ oc create -n istio-system -f istio-installationyaml

3 以下のコマンドを実行してインストールプロセス時に Pod の進捗を確認します

$ oc get pods -n istio-system -w

14 マルチテナントサービスメッシュのインストール

141 マルチテナント Red Hat OpenShift Service Mesh のインストール

Red Hat OpenShift Service Mesh Operator はマルチテナントコントロールプレーンのインストールのサポートを提供しますマルチテナントコントロールプレーンは指定された namespace のみがサービスメッシュに参加できるように設定されるので他のインストールからメッシュを分離します

注記注記

マルチテナントコントロールプレーンのインストールをクラスター全体のコントロールプレーンのインストールと併用することはできませんRed HatOpenShift Service Mesh のインストールはマルチテナントまたは単一のクラスター全体のインストールのいずれかである必要があります

マルチテナントコントロールプレーンのインストールはOpenShift ContainerPlatform の再起動およびアップグレードで問題を生じさせることで知られていますマルチテナントコントロールプレーンのインストールはRed HatOpenShift Service Mesh 012TechPreview 以降のデフォルト設定です

1411 マルチテナントマルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題インストールに関する既知の問題

警告警告

現在自動ルート作成はマルチテナントのサービスメッシュインストールと互換性がありませんマルチテナントインストールを試行する予定がある場合にはServiceMeshControlPlane で ior_enabled を false に設定して無効にされていることを確認します

MeshPolicy は依然としてクラスタースコープのリソースでありOpenShift にインストールされたすべてのコントロールプレーンに適用されますこれにより複数のコントロールプレーンのインストールや1つのコントロールプレーンが削除される場合の不明な動作の発生を防ぐことができます

Jaeger エージェントは DaemonSetとして実行されるためトレーシングは単一の ServiceMeshControlPlane インスタンスに対してのみ有効にされる場合があります

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクト

OpenShift Container Platform 311 Service Mesh のインストールのインストール

24

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 28: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

ServiceMeshControlPlane リソースを削除する前にコントロールプレーンを含むプロジェクトを削除する場合インストールの一部は削除されない可能性があります

SecurityContextConstraints に追加されたサービスアカウントは削除されない可能性があります

Kiali に関連付けられたOAuthClient リソースは削除されないかその redirectURI の一覧が正確ではないことがあります

1412 マルチテナントとクラスター全体のインストールの相違点マルチテナントとクラスター全体のインストールの相違点

マルチテナントインストールとクラスター全体のインストールの主な違いはコントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲ですコンポーネントではクラスタースコープのロールベースのアクセス制御 (RBAC) ClusterRoleBinding が使用されなくなりましたがコンポーネントは namespace スコープの RBAC RoleBinding に依存します

members 一覧のすべての namespace にはコントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding があり各コントロールプレーンのデプロイメントはそれらのメンバー namespace のみを監視します各メンバー namespace には maistraiomember-of ラベルが追加されておりmember-of の値はコントロールプレーンのインストールが含まれる namespace になります

1413 マルチテナントインストールでのマルチテナントインストールでの namespace の設定の設定

マルチテナントコントロールプレーンのインストールはService Mesh の一部として設定されたnamespace のみに影響を与えますServiceMeshControlPlane リソースと同じ namespace にある ServiceMeshMemberRoll リソースの Service Mesh に関連付けられた namespace を指定しこれを default として指定する必要があります

警告警告

Container Network Interface (CNI) を有効にすると手動のサイドカー挿入が機能しますがPod が ServiceMeshMemberRoll リソースの一部でない限りPod はコントロールプレーンと通信できません

注記注記

メンバー namespace はコントロールプレーンのインストールが成功した場合にのみ更新されます

任意の数の namespace を追加できますがnamespace は 単一の ServiceMeshMemberRoll にのみ属することができます

ServiceMeshMemberRoll リソースは以下のイベントに対応して調整されます

ServiceMeshMemberRoll は作成更新または削除されます

ServiceMeshMemberRoll を含む namespace の ServiceMeshControlPlane リソースは作成または更新されます

ServiceMeshMemberRoll に一覧表示される namespace は作成または削除されます

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

25

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 29: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

ServiceMeshMemberRoll リソースは対応する ServiceMeshControlPlane リソースが削除されると削除されます

以下はbookinfo namespace をサービスメッシュに統合する例です

1 ServiceMeshControlPlane カスタムリソースと同じ namespace に ServiceMeshMemberRollという名前のカスタムリソースファイルを作成します

2 リソースに default という名前を付けます

3 namespaces を ServiceMeshMemberRoll のメンバー一覧に追加しますこの例ではbookinfo namespace はサービスメッシュに結合されます

15 インストール後のタスク

151 コントロールプレーンのインストールの確認

注記注記

リソースの名前は istio-installationです

1 以下のコマンドを実行してOperator がコントロールプレーンのデプロイを終了したかどうかを判別します

$ oc get servicemeshcontrolplanebasic-install -n istio-system --template=range statusconditionsprintf s=s reason=s message=snn type status reason messageend

コントロールプレーンのインストールが完了すると出力は以下のようになります

Installed=True reason=InstallSuccessful message=s(ltnilgt)

2 コントロールプレーンをデプロイしたら以下のコマンドを実行して Pod のステータスを確認します

$ oc get pods -n istio-system

3 Pod が以下のような状態にあることを確認します

注記注記

apiVersion maistraiov1 kind ServiceMeshMemberRoll metadata name default spec members a list of namespaces joined into the service mesh - bookinfo

OpenShift Container Platform 311 Service Mesh のインストールのインストール

26

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 30: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

注記注記

この検証ステップの実行時に返される結果はクラスターのノードの数や3scaleJaegerKialiPrometheus などを使用しているかどうかによって異なります

NAME READY STATUS RESTARTS AGE3scale-istio-adapter-67b96f97b5-cwvgt 11 Running 0 99sgrafana-75f4cbbc6-xw99s 11 Running 0 54mistio-citadel-8489b8bb96-ttqfd 11 Running 0 54mstio-egressgateway-5ccd4d5ddd-wtp2h 11 Running 0 52mistio-galley-58ff8db57c-jrpkz 11 Running 0 54mistio-ingressgateway-698674848f-bk57s 11 Running 0 52mistio-node-2d764 11 Running 0 54mistio-node-4h926 11 Running 0 54mistio-node-6qxcj 11 Running 0 54mistio-node-8fxqz 11 Running 0 54mistio-node-gzg5v 11 Running 0 54mistio-node-vxx5p 11 Running 0 54mistio-pilot-764966cf69-9nlhp 22 Running 0 19mistio-policy-7c856f7d5f-4fjk4 22 Running 2 53mistio-sidecar-injector-757b8ccdbf-znggc 11 Running 0 49mistio-telemetry-65d8b47c98-jrp9h 22 Running 2 53mjaeger-f775b79f8-cmbb2 22 Running 0 54mkiali-7646d796cd-kfx29 11 Running 0 20mprometheus-56cb9c859b-dlqmn 22 Running 0 54m

16 アプリケーションの要件

161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件

アプリケーションをサービスメッシュにデプロイする場合Istio のアップストリームのコミュニティーバージョンの動作と Red Hat OpenShift Service Mesh インストール内での動作に違いがいくつかあります

1611 アプリケーションサービスアカウント用のセキュリティー制約の設定アプリケーションサービスアカウント用のセキュリティー制約の設定

注記注記

セキュリティー制約の緩和はRed Hat OpenShift Service Mesh のテクノロジープレビューでのみ必要です

OpenShift 環境で実行されているサービスメッシュにアプリケーションをデプロイする場合アプリケーションを正常に機能させるためにサービスアカウントを使用してアプリケーションのセキュリティー制約を緩和する必要があります各サービスアカウントにはサイドカーコンテナーを正常に実行できるようにするためにanyuid および privileged SCC (Security Context Constraints) を指定したパーミッションを付与する必要があります

Pod のネットワーク設定への変更が istio-init 初期化コンテナーで正常に更新されるようにするには 特権付き SCC が必要でありサイドカーコンテナーが必要なユーザー ID の 1337 で実行できるようにするにはanyuid SCC が必要です

適切なパーミッションを設定するにはアプリケーションの Pod で使用されるサービスアカウントを

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

27

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 31: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですがDeploymentDeploymentConfig は serviceAccountNameを指定して Pod 仕様内でこの設定を上書きする可能性があります

特定された各サービスアカウントについてクラスター設定を更新してクラスター管理者権限を持つアカウントで以下のコマンドを実行しクラスターに anyuid および 特権付き SCC へのアクセスが付与されるようにする必要があります

1 SCC の変更を必要とするサービスアカウントを特定します

注記注記

ltservice accountgt および ltnamespacegt をアプリケーション固有の値に置き換えます

2 関連するサイドカーコンテナーに anyuid SCC を必要とするそれぞれのサービスアカウントについてこのコマンドを実行します

$ oc adm policy add-scc-to-user anyuid -z ltservice accountgt -n ltnamespacegt

3 特権付き SCC が必要な各サービスアカウントについてこのコマンドを実行しその Pod のネットワーク設定に対して更新を正常に実行できるようにします

$ oc adm policy add-scc-to-user privileged -z ltservice accountgt -n ltnamespacegt

1612 マスター設定の更新マスター設定の更新

注記注記

OpenShift Container Platform 41 を実行している場合にはマスター設定の更新は必要ありません

サービスメッシュはアプリケーションの Pod 内のプロキシーサイドカーコンテナーの存在に依存してアプリケーションにサービスメッシュ機能を提供します自動のサイドカーコンテナー挿入を有効にしたり手動で管理したりできますデプロイメント時にアプリケーションにサービスメッシュの適切な設定が含まれるようにアノテーションを使用して自動挿入を実行することが推奨されますこの場合namespace にラベルを付ける必要はありませんこの方法で必要となる権限が少なくビルダー Pod などの他の OpenShift 機能と競合しません

注記注記

namespace にラベルを付けている場合デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入しますRed Hat OpenShift Service Mesh でnamespace にラベルを付ける必要はありません ただしRed Hat OpenShift ServiceMesh ではサイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められますこれにより(Pod のビルドまたはデプロイの場合など)不要な場合にはサイドカーコンテナーを挿入しないようにできますWebhook はすべての namespace にデプロイする Pod の設定をチェックしこれらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します

サービスメッシュサイドカーの自動挿入を有効にするには Webhook のサポートおよび証明書署名要求 (CSR) の署名を追加するためにまず各マスターでマスター設定を変更する必要があります

OpenShift Container Platform 311 Service Mesh のインストールのインストール

28

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 32: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

OpenShift Container Platform インストール内の各マスターで以下の変更を加えます

1 マスター設定ファイルを含むディレクトリーに移動します(例 etcoriginmastermaster-configyaml)

2 以下の内容を含む master-configpatch という名前のファイルを作成します

admissionConfig pluginConfig MutatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission ValidatingAdmissionWebhook configuration apiVersion apiserverconfigk8siov1alpha1 kubeConfigFile devnull kind WebhookAdmission

3 同じディレクトリーで以下のコマンドを実行しmaster-configyaml ファイルにパッチを適用します

$ cp -p master-configyaml master-configyamlprepatch$ oc ex config patch master-configyamlprepatch -p $(cat master-configpatch) gt master-configyaml$ usrlocalbinmaster-restart api ampamp usrlocalbinmaster-restart controllers

16121 サイドカーの自動挿入

アプリケーションを Red Hat OpenShift Service Mesh にデプロイする場合はsidecaristioioinjectアノテーションに値 true を指定して挿入をオプトインする必要がありますオプトインによりサイドカーコンテナーの挿入が OpenShift エコシステム内の複数のフレームワークが使用するビルダーPod などの他の OpenShift 機能に干渉しないようにします

1 エディターでアプリケーションの設定 yaml ファイルを開きます

2 sidecaristioioinject を以下に示すように true の値が含まれる設定 yaml に追加します

スリープテストアプリケーションの例スリープテストアプリケーションの例

apiVersion extensionsv1beta1kind Deploymentmetadata name sleepspec replicas 1 template metadata annotations sidecaristioioinject true labels app sleep spec containers

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

29

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 33: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

3 設定ファイルを保存します

16122 サイドカーコンテナーの手動挿入

サイドカーコンテナーの手動挿入はアップストリームの istioctl コマンドを使用してサポートされます

注記注記

サイドカーを手動で挿入する場合はistio-system namespace 内の istio-sidecar-injectorconfigmap から正しい設定を取得できるように実行中のクラスターへのアクセスがあることを確認します

実行可能ファイルを取得し手動挿入でアプリケーションをデプロイするには以下を行います

1 OS に適した インストール をダウンロードします

2 istioctl バイナリーをパス内の bin ディレクトリーに追加します

3 以下のコマンドを実行してサイドカーをアプリケーションに挿入し設定を oc コマンドにパイプしてデプロイメントを作成します

$ istioctl kube-inject -f appyaml | oc create -f -

17 チュートリアル

いくつかのチュートリアルを使用しサービスメッシュについての詳細を確認することができます

171 Bookinfo チュートリアル

アップストリームの Istio プロジェクトには bookinfo というチュートリアルのサンプルがありこれは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで構成されていますBookinfo アプリケーションはオンラインブックストアの単一カタログエントリーのように書籍に関する情報を表示しますページに表示される内容は書籍の説明書籍の詳細 (ISBNページ数その他の情報)および書評です

Bookinfo アプリケーションは 4 つのマイクロサービスで構成されます

productpage マイクロサービスはdetails と reviews マイクロサービスを呼び出してページを設定します

details マイクロサービスには書籍の情報が含まれています

reviews マイクロサービスには書評が含まれますこれは ratings マイクロサービスも呼び出します

ratings マイクロサービスには書評を伴う書籍のランキング情報が含まれます

reviews マイクロサービスには以下の 3 つのバージョンがあります

- name sleep image tutumcurl command [binsleepinfinity] imagePullPolicy IfNotPresent

OpenShift Container Platform 311 Service Mesh のインストールのインストール

30

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 34: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

バージョン v1 はratings サービスを呼び出しません

バージョン v2 はratings サービスを呼び出して各評価を 1 から 5 の黒い星で表示します

バージョン v3 はratings サービスを呼び出して各評価を 1 から 5 の赤い星で表示します

1711 Bookinfo アプリケーションのインストールアプリケーションのインストール

以下の手順ではService Mesh 012TechPreview を使用する OpenShift Container Platform でのBookinfo チュートリアルのデプロイおよび実行について説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

注記注記

Red Hat OpenShift Service Mesh はアップストリームの Istio プロジェクトとは別の自動挿入を実装しますそのためこの手順では Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfoyaml ファイルのバージョンを使用します

1 Bookinfo アプリケーションのプロジェクトを作成します

$ oc new-project myproject

2 Bookinfo で使用されるサービスアカウントを myproject namespace の anyuid および 特権付き SCC に追加して SCC (Security Context Constraints) を更新します

$ oc adm policy add-scc-to-user anyuid -z default -n myproject$ oc adm policy add-scc-to-user privileged -z default -n myproject

3 bookinfoyaml ファイルを適用して Bookinfo アプリケーションを myproject namespace でデプロイします

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfoyaml

4 bookinfo-gatewayyaml ファイルを適用して Bookinfo の ingress ゲートウェイを作成します

$ oc apply -n myproject -f httpsrawgithubusercontentcomMaistrabookinfomasterbookinfo-gatewayyaml

5 GATEWAY_URL パラメーターの値を設定します

$ export GATEWAY_URL=$(oc get route -n istio-system istio-ingressgateway -o jsonpath=spechost)

1712 Bookinfo インストールの検証インストールの検証

アプリケーションが正常にデプロイされていることを確認するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

31

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 35: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

$ curl -o devnull -s -w http_coden http$GATEWAY_URLproductpage

またはブラウザーで http$GATEWAY_URLproductpage を開くことができます

1713 デフォルトの宛先ルールの追加デフォルトの宛先ルールの追加

1 相互 TLS を有効にしていない場合

$ oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-allyaml

2 相互 TLS を有効にしている場合

oc apply -n myproject -f httpsrawgithubusercontentcomistioistiorelease-11samplesbookinfonetworkingdestination-rule-all-mtlsyaml

3 利用可能な宛先ルールを一覧表示するには以下のコマンドを実行します

$ oc get destinationrules -o yaml

1714 Bookinfo アプリケーションの削除アプリケーションの削除

Bookinfo アプリケーションで終了したらクリーンアップスクリプトを実行して削除することができます

ヒントヒント

本書の他のチュートリアルでも Bookinfo アプリケーションを使用しています他のチュートリアルを継続して使用する場合はクリーンアップスクリプトを実行しないでください

1 クリーンアップスクリプトをダウンロードします

$ curl -o cleanupsh httpsrawgithubusercontentcomMaistrabookinfomastercleanupsh ampamp chmod +x cleanupsh

2 クリーンアップスクリプトを実行して Bookinfo 仮想サービスゲートウェイを削除しPod を終了します

$ cleanupshnamespace [default] myproject

3 以下のコマンドを実行してシャットダウンを確認します

$ oc get virtualservices -n myprojectNo resources found$ oc get gateway -n myprojectNo resources found$ oc get pods -n myprojectNo resources found

172 分散トレースのチュートリアル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

32

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 36: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

Jaeger はオープンソースの分散トレースシステムですJaeger はマイクロサービスベースの分散システムの監視およびトラブルシューティングに使用しますJaeger を使用するとトレースを実行できますこれはアプリケーションを構成するさまざまなマイクロサービスで要求のパスを追跡しますJaeger はデフォルトでサービスメッシュの一部としてインストールされます

このチュートリアルではサービスメッシュおよび bookinfo チュートリアルを使用してRed HatOpenShift Service Mesh の Jaeger コンポーネントでトレースを実行する方法を説明します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1721 トレースの生成とトレースデータの分析トレースの生成とトレースデータの分析

1 Bookinfo アプリケーションをデプロイした後にhttp$GATEWAY_URLproductpage にアクセスしページを数回更新して一部のアクティビティーを生成します

2 Jaeger ダッシュボードにアクセスするためのルートはすでに存在しますルートの詳細についてクエリーします

$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath=spechost)

3 ブラウザーを起動してhttps$JAEGER_URL に移動します

4 Jaeger ダッシュボードの左側のペインでサービスメニューから「productpage」を選択しペイン下部の Find Traces ボタンをクリックします以下のイメージに示されているようにトレースの一覧が表示されます

5 一覧のトレースのいずれかをクリックしそのトレースの詳細ビューを開きます最上部 (最新の) トレースをクリックするとproductpage の最終更新に対応する詳細が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

33

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 37: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

先の図のトレースは一部のネストされたスパンで構成されており各スパンは Bookinfo サービス呼び出しに対応しすべてが productpage 要求の応答で実行されます全体的な処理時間は 262s でdetails サービスは 356msreviews サービスは 26sratings サービスは532ms かかりましたリモートサービスへの各呼び出しはそれぞれクライアント側とサーバー側のスパンで表されますたとえばdetails クライアント側スパンには productpage detailsmyprojectsvcclusterlocal9080 というラベルが付けられますその下にネスト化されるスパンにはdetails detailsmyprojectsvcclusterlocal9080 というラベルが付けられ要求のサーバー側の処理に対応しますトレースは istio-policy への呼び出しも表示しこれには Istio による承認チェックが反映されます

1722 トレーシングチュートリアルの削除トレーシングチュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いトレーシングチュートリアルを削除します

173 Prometheus チュートリアル

Prometheus はオープンソースのシステムでありサービスモニタリングツールキットですPrometheus は指定された間隔で設定されたターゲットのメトリクスを収集しルール式を評価し結果を表示し一部の条件が true の場合にアラートをトリガーできますGrafana またはその他の APIコンシューマーを使用して収集したデータを視覚化できます

このチュートリアルではサービスメッシュおよび bookinfo のチュートリアルを使用してPrometheus を使用してメトリクスについてクエリーする方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1731 メトリクスのクエリーメトリクスのクエリー

1 prometheus サービスがクラスターで実行されていることを確認しますKubernetes 環境では以下のコマンドを実行します

$ oc get svc prometheus -n istio-system

以下のような出力が表示されます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

34

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 38: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEprometheus 105924154 ltnonegt 9090TCP 2m

2 Bookinfo アプリケーションにアクセスしてネットワークトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

3 Prometheus ユーザーインターフェースにアクセスするためのルートはすでに存在していますルートの詳細についてクエリーします

$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath=spechost)

4 ブラウザーを起動しhttp$PROMETHEUS_URL に移動します以下の図のようにPrometheus ホーム画面が表示されます

5 Expression フィールドに istio_request_duration_seconds_countを入力しExecute ボタンをクリックします以下の図と同様の画面が表示されます

6 セレクターを使用してクエリーを絞り込むことができますたとえばistio_request_duration_seconds_countdestination_workload=reviews-v2 は一致する destination_workload ラベルのあるカウンターのみを表示しますクエリーの使用についての詳細はPrometheus のドキュメントを参照してください

7 利用可能なすべての Prometheus メトリクスを一覧表示するには以下のコマンドを実行します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

35

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 39: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

$ oc get prometheus -n istio-system -o jsonpath=items[]specmetrics[]name requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

クエリーで使用される場合に返されるメトリクスの名前には istio_ が付けられている必要があることに注意してください たとえばrequests_total は istio_requests_total になります

1732 Prometheus チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いPrometheus チュートリアルを削除します

174 Kiali チュートリアル

Kiali は Istio と連携してサービスメッシュトポロジーを可視化しサーキットブレーカー要求レートなどの機能を見えるようにしますKiali は抽象アプリケーションからサービスおよびワークロードまでさまざまなレベルでのメッシュコンポーネントに関する洞察を提供しますKiali はリアルタイムで namespace のインタラクティブなグラフビューを提供します複数のレベル (アプリケーションバージョンワークロード) での対話と選択したグラフノードまたはエッジのコンテキスト情報およびチャートを表示できます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してKiali コンソールでサービスメッシュのトポロジーおよび健全性を表示する方法を示します

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

カスタムリソースファイルで指定される Kiali パラメーター

Bookinfo デモ用アプリケーションがインストールされている

1741 Kiali コンソールへのアクセスコンソールへのアクセス

1 Kiali コンソールにアクセスするためのルートはすでに存在します以下のコマンドを実行してルートおよび Kiali URL を取得します

$ oc get routes

環境が若干異なる可能性がありますが以下のような結果が表示されます

NAME HOSTPORT PATH SERVICES PORT TERMINATION WILDCARDgrafana grafana-istio-system127001nipio grafana http Noneistio-ingress istio-ingress-istio-system127001nipio istio-ingress http Noneistio-ingressgateway istio-ingressgateway-istio-system127001nipio istio-ingressgateway http Nonejaeger-query jaeger-query-istio-system127001nipio jaeger-query jaeger-query edge Nonekiali kiali-istio-system127001nipio kiali ltallgt None

OpenShift Container Platform 311 Service Mesh のインストールのインストール

36

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 40: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

prometheus prometheus-istio-system127001nipio prometheus http-prometheus Nonetracing tracing-istio-system127001nipio tracing tracing edge None

2 ブラウザーを起動しhttps$KIALI_URL (上記の出力では kiali-istio-system127001nipio) に移動しますKiali コンソールのログイン画面が表示されるはずです

3 インストール時にカスタムリソースファイルに指定したユーザー名およびパスワードを使用してKiali コンソールにログインします

1742 概要ページ概要ページ

初回ログイン時には概要 (Overview) ページが表示されますここではサービスメッシュに含まれるさまざまな namespace の健全性についての概要を確認できますアプリケーションワークロードまたはサービスの正常性を表示できます

1743 グラフページグラフページ

グラフページには要求によってつながれるマイクロサービスのグラフが表示されますこのページではアプリケーションワークロードまたはサービスが相互に対話する方法を確認することができます

1 左側のナビゲーションにあるグラフをクリックします

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

37

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 41: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

2 必要に応じてNamespace メニューから bookinfo を選択しますグラフは Bookinfo アプリケーション内のアプリケーションを表示します

3 Namespace メニューの疑問符 () をクリックするとGraph ヘルプツアーを利用できます

4 Done をクリックしてヘルプツアーを閉じます

5 左下隅の Legend をクリックしますKiali はグラフの凡例を表示します

6 グラフの凡例を閉じます

7 productpage ノードにカーソルを合わせますグラフはノードからの送受信トラフィックのみをハイライトすることに注意してください

8 productpage ノードをクリックしますページの右側の詳細が変更されproductpage の詳細が表示されます

1744 アプリケーションページアプリケーションページ

アプリケーションページではアプリケーションそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Applications をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace のアプリケーションとその健全性が表示されます

3 その他の健全性の詳細情報を表示するには健全性 (Health) アイコンにカーソルを合わせます

4 reviews サービスをクリックしそのアプリケーションの詳細を表示します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

38

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 42: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

5 アプリケーションの詳細ページではより詳細な健全性情報を表示できreviews サービスの3 つのバージョンについてさらに詳しく見ることができます

6 アプリケーションの詳細ページからタブをクリックしてアプリケーションのトラフィックおよびインバウンドとアウトバウンドのメトリクスを表示することもできます

1745 ワークロードページワークロードページ

ワークロードページではワークロードそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Workloads をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページでは選択したnamespace のワークロードそれらの健全性およびラベルが表示されます

3 reviews-v1 ワークロードをクリックしワークロードの詳細を表示します

4 ワークロードの詳細ページでワークロードに関連付けられた Pod とサービスの概要を表示できます

5 ワークロードの詳細ページからタブをクリックしてワークロードのトラフィックログおよびインバウンドおよびアウトバウンドメトリクスを表示することもできます

1746 サービスページサービスページ

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

39

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 43: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます

1 左側のナビゲーションにある Services をクリックします

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されているすべてのサービスの一覧とヘルスステータスなどのそのサービスに関する追加情報が表示されます

3 サービスに関する健全性の情報を表示するにはいずれかのサービスのヘルスアイコンにカーソルを合わせますサービスはオンラインの状態で要求に応答しエラーがない場合に正常であるとみなされます

4 Reviews サービスをクリックして詳細情報を表示しますこのサービスには 3 つの異なるバージョンがあることに注意してください

5 サービスの詳細ページでワークロード仮想サービスサービスに関連付けられた宛先ルールの概要を表示できます

6 サービスの詳細ページからはタブをクリックしてサービスのトラフィックインバウンドメトリクスおよびトレースを表示することもできます

7 Actions メニューをクリックしますここから以下の操作を実行できます

重み付けされたルーティングの作成

一致するルーティングの作成

トラフィックの一時停止

すべてのトラフィックルーティングの削除

8 サービスの名前を 1 つクリックしてそのサービスの特定バージョンに関する追加情報を表示します

1747 Istio 設定ページ設定ページ

Istio 設定ページではサーキットブレーカー宛先ルールフォールト挿入ゲートウェイルートルートルール仮想サービスなど現在サービスメッシュに対して実行されているすべての設定を表示できます

1 左側のナビゲーションにある Istio Config をクリックします

OpenShift Container Platform 311 Service Mesh のインストールのインストール

40

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 44: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

2 必要に応じてNamespace メニューから bookinfo を選択しますこのページには選択したnamespace で実行されている設定の一覧と検証のステータスが表示されます

3 設定ファイルに関する追加情報を表示するには以下のいずれかの設定をクリックします

1748 分散トレースのページ分散トレースのページ

左側のナビゲーションの Distributed Tracing リンクをクリックしますこのページではJaeger によって提供されるデータをトレースできます

1749 Kiali チュートリアルの削除チュートリアルの削除

Kiali チュートリアルを削除する手順はBookinfo チュートリアルを削除する手順と同じです

175 Grafana チュートリアル

Grafana はモニタリングおよびメトリクス分析とダッシュボードを作成するためのオープンソースツールですGrafana を使用してGraphiteElasticsearchOpenTSDB PrometheusまたはInfluxDB などメトリクスが保存される場所にかかわらずクエリー視覚化アラートを実行できますIstio には Prometheus および Grafana によるモニタリングが含まれます

このチュートリアルではサービスメッシュと bookinfo のチュートリアルを使用してIstioDashboard を設定し使用してメッシュトラフィックを監視する方法を説明しますこのタスクの一環としてGrafana Istio アドオンをインストールしWeb ベースのインターフェースを使用してサービスメッシュのトラフィックデータを表示します

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

41

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 45: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

Bookinfo デモ用アプリケーションがインストールされている

1751 Grafana ダッシュボードへのアクセスダッシュボードへのアクセス

1 Grafana ダッシュボードにアクセスするためのルートがすでに存在していますルートの詳細についてクエリーします

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath=spechost)

2 ブラウザーを起動してhttp$GRAFANA_URL に移動します以下の図が示すようにGrafana のホーム画面が表示されます

3 左上隅のメニューからIstio Mesh Dashboard を選択し Istio メッシュメトリクスを表示します

4 Bookinfo アプリケーションにアクセスして一部のトラフィックを生成します

$ curl -o devnull http$GATEWAY_URLproductpage

Dashboard は以下のようなメッシュを使用したトラフィックを反映します

OpenShift Container Platform 311 Service Mesh のインストールのインストール

42

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 46: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

5 サービスの詳細なメトリクスを表示するにはService 列でサービス名をクリックしますサービスダッシュボードは以下の図のようになります

Bookinfo が http ベースのサービスのみを使用するのでTCP Bandwidth メトリクスは空であることに注意してくださいまたダッシュボードはクライアントワークロードサービスを呼び出すワークロードおよびサービスワークロードからの要求を処理するワークロードについてのメトリクスを表示しますダッシュボードの上部でメニューを使用して別のサービスに切り替えるかまたはクライアントおよびサービスワークロードでメトリクスをフィルターできます

6 ワークロードダッシュボードに切り替えるには左上隅にあるメニューで Istio WorkloadDashboard をクリックします以下の図のような画面が表示されます

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

43

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 47: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します

1752 Grafana チュートリアルの削除チュートリアルの削除

Bookinfo チュートリアルを削除する手順に従いGrafana のチュートリアルを削除します

176 Red Hat OpenShift Application Runtime Missions

bookinfo ベースのチュートリアルのほかにもFabric8 統合開発プラットフォームランチャーを使用しIstio 機能の一部を確認するためにサービスメッシュ固有のチュートリアル (ミッション) とサンプルアプリケーション (ブースター) を使用できますこれらのブースターやミッションクリティカルのそれぞれは 4 つの異なるアプリケーションランタイムで利用できますFabric8 の詳細はFabric8 のドキュメントを参照してください

前提条件

OpenShift Container Platform 311 以降がインストールされている

Red Hat OpenShift Service Mesh 012TechPreview がインストールされている

ランチャーパラメーターがカスタムリソースファイルで指定されている

表111 RHOAR チュートリアル

ランタイムランタイム ミッションミッション 説明説明

Springboot Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

44

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 48: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

Springboot Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Springboot セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Springboot ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

Thorntail (AKAWildfly Swarm) Istio Circuit Breaker ミッションミッション ここではIstio を使用してCircuit Breaker アーキテクチャーパターンを実装する方法を取り上げます

Thorntail Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで適切にインストルメント化されたマイクロサービスの対話について取り上げます

Thorntail セキュリティーのミッションセキュリティーのミッション ここではサービスへのアクセスに関する Istio セキュリティーの概念がアプリケーションによって個別に制御されるのではなくプラットフォームによって制御されるケースを説明します

Thorntail ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

45

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 49: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

Vertx Istio Circuit Breaker ミッションミッション ここではIstio を使用して (最小限に) インストルメント化されたEclipse Vertx マイクロサービスで Circuit Breaker を実装する方法を説明します

Vertx Istio Distributed Tracing ミッミッションション

このシナリオではJaeger の分散トレース機能と(最小限に)インストルメント化された EclipseVertx アプリケーションのセットの対話について取り上げます

Vertx セキュリティーのミッションセキュリティーのミッション このシナリオではEclipse Vertxアプリケーションのセットを使用した Istio Transport LayerSecurity(TLS) およびアクセス制御リスト (ACL) について説明します

Vertx ルーティングのミッションルーティングのミッション ここでは最小限のサンプルアプリケーションのセットを使ってIstio の動的トラフィックルーティング機能を使用するケースを取り上げます

Nodejs Istio Circuit Breaker ミッションミッション ここではIstio を使用してNodejs アプリケーションでCircuit Breaker アーキテクチャーのパターンを実装する方法について説明します

Nodejs Istio Distributed Tracing のミッのミッションション

このシナリオではJaeger の分散トレース機能およびサービスメッシュで実行される適切にインストルメント化された Nodejs アプリケーションの対話について取り上げます

Nodejs セキュリティーのミッションセキュリティーのミッション 以下のシナリオはNodejs アプリケーションで Istio TransportLayer Security (TLS) およびアクセス制御リスト (ACL) について説明します

ランタイムランタイム ミッションミッション 説明説明

OpenShift Container Platform 311 Service Mesh のインストールのインストール

46

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 50: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

Nodejs ルーティングのミッションルーティングのミッション ここでは実際のロールアウトシナリオをシミュレートするために設計されたサンプルアプリケーションのセットを使用して Istioの動的トラフィックルーティング機能を使用するケースを説明します

ランタイムランタイム ミッションミッション 説明説明

18 RED HAT OPENSHIFT SERVICE MESH の削除

181 Red Hat OpenShift Service Mesh の削除

以下のプロセスに従って既存の OpenShift Container Platform インスタンスからサービスメッシュを削除しますクラスター管理者としてログインしクラスターにアクセスできるホストからこれらのコマンドを実行します

1811 コントロールプレーンの削除コントロールプレーンの削除

注記注記

servicemeshcontrolplane を削除すると作成されたリソースのアンインストールをService Mesh Operator に対してトリガーします

注記注記

servicemeshcontrolplane の代わりに短い smcp コマンドを使用できます

1 以下のコマンドでインストールされたカスタムリソースの名前を取得します

oc get servicemeshcontrolplanes -n istio-system

2 ltname_of_custom_resourcegt を先のコマンドの出力に置き換え以下のコマンドを実行してカスタムリソースを削除します

$ oc delete servicemeshcontrolplanes -n istio-system ltname_of_custom_resourcegt

1812 Operator の削除の削除

Red Hat OpenShift Service Mesh を正常に削除するにはOperator を削除する必要がありますRedHat OpenShift Service Mesh Operator を削除したらJaeger Operator および Kiali Operator を削除する必要があります

18121 Red Hat OpenShift Service Mesh Operator の削除

このコマンドを実行してRed Hat OpenShift Service Mesh Operator を削除します

$ oc delete -n istio-operator -f httpsrawgithubusercontentcomMaistraistio-operatormaistra-012deployservicemesh-operatoryaml

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

47

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 51: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

18122 Jaeger Operator の削除

以下のコマンドを実行して Jaeger Operator を削除します

$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployoperatoryaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployrole_bindingyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployroleyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deployservice_accountyaml$ oc delete -n observability -f httpsrawgithubusercontentcomjaegertracingjaeger-operatorv1131deploycrdsjaegertracing_v1_jaeger_crdyaml

18123 Kiali Operator の削除

以下のコマンドを実行してKiali Operator を削除します

$ bash lt(curl -L httpsgitiogetLatestKialiOperator) --uninstall-mode true --operator-watch-namespace

1813 プロジェクトの削除プロジェクトの削除

1 以下のコマンドを実行して istio-system プロジェクトを削除します

$ oc delete project istio-system

2 以下のコマンドを実行して istio-operator プロジェクトを削除します

$ oc delete project istio-operator

3 以下のコマンドを実行して kiali-operator プロジェクトを削除します

$ oc delete project kiali-operator

4 以下のコマンドを実行して observability プロジェクトを削除します

$ oc delete project observability

19 RED HAT OPENSHIFT SERVICE MESH のアップグレード

191 Red Hat OpenShift Service Mesh のアップグレード

Red Hat OpenShift Service Mesh はテクノロジープレビュー機能ですがアップグレードはありません既存のサービスメッシュのインストール(たとえば開発者プレビューをインストールしている場合)がある場合Red Hat OpenShift Service Mesh の新規バージョンをインストールする前にインストールを削除する 必要 があります

110 3SCALE ISTIO ADAPTER

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベル

OpenShift Container Platform 311 Service Mesh のインストールのインストール

48

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 52: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

3scale Istio アダプターを使用するとRed Hat OpenShift Service Mesh 内で実行中のサービスにラベルを付けそのサービスを 3scale API Management ソリューションと統合できます

前提条件

Red Hat OpenShift Service Mesh 0120+

稼働している 3scale アカウント (SaaS または 3scale 25 On-Premises)

Red Hat OpenShift Service Mesh の前提条件

Mixer ポリシーの適用が有効になっていることを確認します「Mixer ポリシー適用の更新」では現在の Mixer ポリシーの適用ステータスをチェックしポリシーの適用を有効にする手順が説明されています

注記注記

3scale Istio アダプターを設定するにはアダプターパラメーターをカスタムリソースファイルに追加する手順についてサービスメッシュのインストールについて参照してください

1101 アダプターと Red Hat OpenShift Service Mesh の統合

これらの例を使用して3scale Istio アダプターを使用してサービスに対する要求を設定できます

注記注記

kind handler リソースにとくに注意してください3scale の認証情報と管理する API のサービス ID を使用してこれを更新する必要があります

1 3scale 設定でハンドラー設定を変更します

2 3scale 設定でルール設定を変更します

apiVersion configistioiov1alpha2 kind handler metadata name threescale spec adapter threescale params service_id ltSERVICE_IDgt system_url httpsltorganizationgt-admin3scalenet access_token ltACCESS_TOKENgt connection address threescale-istio-adapter3333

rule to dispatch to handler threescalehandler apiVersion configistioiov1alpha2 kind rule metadata name threescale spec match destinationlabels[service-mesh3scalenet] == true

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

49

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 53: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

11011 カスタムリソースの生成カスタムリソースの生成

アダプターにはhandlerinstanceおよび rule カスタムリソースの生成を可能にするツールが含まれます

表112 使用法

オプションオプション 説明説明 必須必須 デフォルト値デフォルト値

-h --help 利用可能なオプションについてのヘルプ出力を生成します

No

--name この URL の一意の名前トークンのペア

Yes

-n --namespace テンプレートを生成するnamespace

No istio-system

-t --token 3scale アクセストークン Yes

-u --url 3scale 管理ポータルURL

Yes

-s --service 3scale APIサービス ID Yes

--auth 指定する 3scale 認証パターン (1=Api Key2=App IdApp Key3=OIDC)

No ハイブリッド

-o --output 生成されたマニフェストを保存するファイル

No 標準出力

-v CLI バージョンを出力し即座に終了する

No

110111 URL サンプルからのテンプレートの生成

この例ではトークンと URL のペアを 1 つのハンドラーとして複数のサービスで共有できるように汎用テンプレートを生成します

$ 3scale-gen-config --name=admin-credentials --url=httpsltorganizationgt-admin3scalenet443 --token=[redacted]

この例ではハンドラーに埋め込まれたサービス ID を使用してテンプレートを生成します

actions - handler threescalehandler instances - threescale-authorizationinstance

OpenShift Container Platform 311 Service Mesh のインストールのインストール

50

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 54: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

$ 3scale-gen-config --url=httpsltorganizationgt-admin3scalenet --name=my-unique-id --service=123456789 --token=[redacted]

11012 デプロイされたアダプターからのマニフェストの生成デプロイされたアダプターからのマニフェストの生成

デプロイされたアダプターからこれらのマニフェストを生成するにはこれが istio-systemnamespace にデプロイされることを前提とし以下を実行します

$ export NS=istio-system URL=httpsltreplacemegt-admin3scalenet443 NAME=name TOKEN=tokenoc exec -n $NS $(oc get po -n $NS -o jsonpath=items[(metadatalabelsapp==3scale-istio-adapter)]metadataname) -it -- 3scale-config-gen --url $URL --name $NAME --token $TOKEN -n $NS

これでターミナルにサンプル出力が生成されます必要に応じてこれらのサンプルを編集しoc create コマンドを使用してオブジェクトを作成します

要求がアダプターに到達するとアダプターはサービスが 3scale の API にどのようにマッピングされるかを認識している必要がありますこれは以下の 2 つの方法のいずれかで提供できます

ワークロードのラベルとして実行 (推奨)

ハンドラーでの service_idとしてのハードコーディング

必要なアノテーションでワークロードを更新します

注記注記

ハンドラーに埋め込まれていない場合は以下の例に記載されているサービス ID のみを更新する必要がありますハンドラーの設定が優先されます

$ export CREDENTIALS_NAME=replace-meexport SERVICE_ID=replace-meexport DEPLOYMENT=replace-mepatch=$(oc get deployment $DEPLOYMENTpatch=$(oc get deployment $DEPLOYMENT --template=spectemplatemetadatalabels range $k$v = spectemplatemetadatalabels $k $v end service-mesh3scalenetservice-id$SERVICE_IDservice-mesh3scalenetcredentials$CREDENTIALS_NAME )oc patch deployment $DEPLOYMENT --patch $patch

11013 アダプター経由でのサービストラフィックのルーティングアダプター経由でのサービストラフィックのルーティング

3scale アダプターを使用してサービスのトラフィックを駆動するにはkind rule リソースで以前に設定で作成した destinationlabels[service-mesh3scalenetcredentials] ==threescale ルールに一致させる必要があります

サービスを統合するには上記のラベルがターゲットワークロードのデプロイメントでPodTemplateSpec に追加される必要があります値の threescaleは生成されたハンドラーの名前を参照しますこのハンドラーは3scale を呼び出すのに必要なアクセストークンを保存します

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

51

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 55: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

以下のラベルをワークロードに追加して要求時にサービス ID をインスタンス経由でアダプターに渡します

destinationlabels[service-mesh3scalenetservice-id] == replace-me

3scale の管理者は必要な認証情報名とサービス ID の両方を提供できる必要があります

1102 3scale での統合設定

注記注記

3scale SaaS を使用している場合Red Hat OpenShift Service Mesh は Early Access プログラムの一部として有効にされています

11021 統合設定統合設定

1 [your_API_name] gt Integration gt Configuration の順に移動します

2 Integration ページの上部で右上隅の edit integration settings をクリックします

3 Service Mesh の見出しでIstio オプションをクリックします

4 ページの下部までスクロールしUpdate Service をクリックします

1103 キャッシング動作

3scale System API からの応答はアダプター内でデフォルトでキャッシュされますcacheTTLSeconds 値よりも古いとエントリーはキャッシュから消去されますまたデフォルトでキャッシュされたエントリーの自動更新はcacheRefreshSeconds 値に基づいて期限が切れる前に数秒間試行されますcacheTTLSeconds 値よりも高い値を設定することで自動更新を無効にできます

cacheEntriesMax を正の値以外に設定するとキャッシングを完全に無効にできます

更新プロセスを使用すると到達不能になるホストのキャッシュされた値が期限が切れて最終的に消去される前に再試行されます

1104 認証要求

このテクノロジープレビューリリースは以下の認証方法をサポートします

標準 API キー 単一のランダム文字列またはハッシュが識別子およびシークレットトークンとして機能します

Application identifier and key pairs イミュータブルな識別子とミュータブルなシークレットキー文字列これは AppID と呼ばれています

OpenID authentication method JSON Web トークンから解析されるクライアント ID 文字列これは OpenID Connect (OIDC) と呼ばれています

11041 認証パターンの適用認証パターンの適用

以下の認証方法の例に従って instance カスタムリソースを変更し認証動作を設定します認証情報は以下から受け取ることができます

OpenShift Container Platform 311 Service Mesh のインストールのインストール

52

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 56: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

要求ヘッダー

要求パラメーター

要求ヘッダーとクエリーパラメーターの両方

注記注記

ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを X-User-Key として送信する場合はこれを設定で requestheaders[x-user-key] として参照される必要があります

110411 API キー認証方法

サービスメッシュはsubject カスタムリソースパラメーターの user オプションで指定されたクエリーパラメーターと要求ヘッダーで API キーを検索しますこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを省略することでAPI キーの検索をクエリーパラメーターまたは要求ヘッダーに制限できます

この例ではサービスメッシュは user_key クエリーパラメーターの API キーを検索しますAPI キーがクエリーパラメーターにない場合サービスメッシュは x-user-key ヘッダーを確認します

API キー認証方法の例キー認証方法の例

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば「key」というクエリーパラメーターの API キーを確認するにはrequestquery_params[user_key] を requestquery_params[key] に変更します

110412 アプリケーション ID およびアプリケーションキーペアの認証方法

サービスメッシュはsubject カスタムリソースパラメーターの properties オプションで指定されるようにクエリーパラメーターと要求ヘッダーでアプリケーション ID とアプリケーションキーを検索しますアプリケーションキーはオプションですこれはカスタムリソースファイルで指定される順序で値をチェックします不要なオプションを含めないことで認証情報の検索をクエリーパラメーターまたは要求ヘッダーのいずれかに制限できます

この例ではサービスメッシュは最初にクエリーパラメーターのアプリケーション ID とアプリケーションキーを検索し必要に応じて要求ヘッダーに移動します

アプリケーションアプリケーション ID およびアプリケーションキーペアの認証方法の例およびアプリケーションキーペアの認証方法の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | action path requesturl_path method requestmethod | get

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

53

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 57: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえばidentification という名前のクエリーパラメーターのアプリケーション ID を確認するにはrequestquery_params[app_id] を requestquery_params[identification] に変更します

110413 OpenID 認証方法

OpenID Connect (OIDC) 認証方法を使用するにはsubject フィールドで properties 値を使用して client_id および任意で app_keyを設定します

このオブジェクトは前述の方法を使用して操作することができます以下の設定例ではクライアント識別子 (アプリケーション ID) はazp ラベルの JSON Web Token (JWT) から解析されますこれは必要に応じて変更できます

OpenID 認証方法の例認証方法の例

この統合を正常に機能させるにはクライアントがアイデンティティープロバイダー (IdP) で作成されるよう OIDC を 3scale で実行する必要があります保護するサービスと同じ namespace でサービスのエンドユーザー認証を作成する必要がありますJWT は要求の Authorization ヘッダーに渡されます

以下で定義されるサンプル Policy ではissuer と jwksUri を適宜置き換えます

OpenID Policy の例の例

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorization namespace istio-systemspec template authorization params subject app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | action path requesturl_path method requestmethod | get

apiVersion configistioiov1alpha2 kind instance metadata name threescale-authorization spec template threescale-authorization params Subject properties app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

OpenShift Container Platform 311 Service Mesh のインストールのインストール

54

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 58: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

110414 ハイブリッド認証方法

特定の認証方法を適用せずいずれかの方法の有効な認証情報を受け入れる方法を選択できますAPIキーとアプリケーション IDアプリケーションキーペアの両方が提供される場合サービスメッシュはAPI キーを使用します

この例ではサービスメッシュがクエリーパラメーターの API キーをチェックし次に要求ヘッダーを確認しますAPI キーがない場合クエリーパラメーターのアプリケーション ID とキーをチェックし次に要求ヘッダーを確認します

ハイブリッド認証方法の例ハイブリッド認証方法の例

1105 アダプターメトリクス

アダプターはデフォルトでmetrics エンドポイントのポート 8080 で公開されるさまざまなPrometheus メトリクスを報告しますこれらのメトリクスからアダプターと 3scale 間の対話方法についての洞察が提供されますサービスには自動的に検出されPrometheus によって収集されるようにラベルが付けられます

apiVersion authenticationistioiov1alpha1 kind Policy metadata name jwt-example namespace bookinfo spec origins - jwt issuer gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloak jwksUri gt- httpkeycloak-keycloak34242107254nipioauthrealms3scale-keycloakprotocolopenid-connectcerts principalBinding USE_ORIGIN targets - name productpage

apiVersion configistioiov1alpha2kind instancemetadata name threescale-authorizationspec template authorization params subject user requestquery_params[user_key] | requestheaders[x-user-key] | properties app_id requestquery_params[app_id] | requestheaders[x-app-id] | app_key requestquery_params[app_key] | requestheaders[x-app-key] | client_id requestauthclaims[azp] | action path requesturl_path method requestmethod | get service destinationlabels[service-mesh3scalenetservice-id] |

第第1章章 RED HAT OPENSHIFT SERVICE MESH のインストールのインストール

55

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス
Page 59: OpenShift Container Platform 3 - Red Hat Customer …...できます。コントロールプレーンの機能を使用してサービスメッシュを設定し、管理します。Red

OpenShift Container Platform 311 Service Mesh のインストールのインストール

56

  • 目次
  • 第1章 RED HAT OPENSHIFT SERVICE MESH のインストール
    • 11 製品概要
      • 111 Red Hat OpenShift Service Mesh の概要
      • 112 Red Hat OpenShift Service Mesh アーキテクチャー
      • 113 サポートされる設定
      • 114 Red Hat OpenShift Service Mesh とアップストリーム Istio コミュニティーインストールの比較について確認する
        • 1141 マルチテナントインストール
        • 1142 自動的な挿入
        • 1143 ロールベースアクセス制御機能
        • 1144 自動ルート作成
        • 1145 OpenSSL
        • 1146 Container Network Interface (CNI)
          • 115 Red Hat OpenShift Service Mesh のインストールの概要
            • 12 前提条件
              • 121 Red Hat OpenShift Service Mesh のインストールの前提条件
                • 1211 OpenShift Container Platform インストールの準備
                • 1212 ノード設定の更新
                • 1213 コンテナーレジストリーの更新
                    • 13 SERVICE MESH のインストール
                      • 131 Red Hat OpenShift Service Mesh のインストール
                        • 1311 Operator のインストール
                        • 1312 Operator インストールの検証
                        • 1313 カスタムリソースファイルの作成
                        • 1314 カスタムリソースパラメーター
                        • 1315 マルチテナントインストールの設定
                        • 1316 Mixer ポリシー適用の更新
                        • 1317 コントロールプレーンのデプロイ
                            • 14 マルチテナントサービスメッシュのインストール
                              • 141 マルチテナント Red Hat OpenShift Service Mesh のインストール
                                • 1411 マルチテナント Red Hat OpenShift Service Mesh インストールに関する既知の問題
                                • 1412 マルチテナントとクラスター全体のインストールの相違点
                                • 1413 マルチテナントインストールでの namespace の設定
                                    • 15 インストール後のタスク
                                      • 151 コントロールプレーンのインストールの確認
                                        • 16 アプリケーションの要件
                                          • 161 Red Hat OpenShift Service Mesh へのアプリケーションのデプロイに関する要件
                                            • 1611 アプリケーションサービスアカウント用のセキュリティー制約の設定
                                            • 1612 マスター設定の更新
                                                • 17 チュートリアル
                                                  • 171 Bookinfo チュートリアル
                                                    • 1711 Bookinfo アプリケーションのインストール
                                                    • 1712 Bookinfo インストールの検証
                                                    • 1713 デフォルトの宛先ルールの追加
                                                    • 1714 Bookinfo アプリケーションの削除
                                                      • 172 分散トレースのチュートリアル
                                                        • 1721 トレースの生成とトレースデータの分析
                                                        • 1722 トレーシングチュートリアルの削除
                                                          • 173 Prometheus チュートリアル
                                                            • 1731 メトリクスのクエリー
                                                            • 1732 Prometheus チュートリアルの削除
                                                              • 174 Kiali チュートリアル
                                                                • 1741 Kiali コンソールへのアクセス
                                                                • 1742 概要ページ
                                                                • 1743 グラフページ
                                                                • 1744 アプリケーションページ
                                                                • 1745 ワークロードページ
                                                                • 1746 サービスページ
                                                                • 1747 Istio 設定ページ
                                                                • 1748 分散トレースのページ
                                                                • 1749 Kiali チュートリアルの削除
                                                                  • 175 Grafana チュートリアル
                                                                    • 1751 Grafana ダッシュボードへのアクセス
                                                                    • 1752 Grafana チュートリアルの削除
                                                                      • 176 Red Hat OpenShift Application Runtime Missions
                                                                        • 18 RED HAT OPENSHIFT SERVICE MESH の削除
                                                                          • 181 Red Hat OpenShift Service Mesh の削除
                                                                            • 1811 コントロールプレーンの削除
                                                                            • 1812 Operator の削除
                                                                            • 1813 プロジェクトの削除
                                                                                • 19 RED HAT OPENSHIFT SERVICE MESH のアップグレード
                                                                                  • 191 Red Hat OpenShift Service Mesh のアップグレード
                                                                                    • 110 3SCALE ISTIO ADAPTER
                                                                                      • 1101 アダプターと Red Hat OpenShift Service Mesh の統合
                                                                                        • 11011 カスタムリソースの生成
                                                                                        • 11012 デプロイされたアダプターからのマニフェストの生成
                                                                                        • 11013 アダプター経由でのサービストラフィックのルーティング
                                                                                          • 1102 3scale での統合設定
                                                                                            • 11021 統合設定
                                                                                              • 1103 キャッシング動作
                                                                                              • 1104 認証要求
                                                                                                • 11041 認証パターンの適用
                                                                                                  • 1105 アダプターメトリクス