そもそも ICT って何でしょう? · 関東も朝晩少し寒くなってきましたね。 体調を崩しやすい時期かと思いますが、風邪などひきませんようにお気を付けください。
OpenShift Container Platform 3 - Red Hat Customer...
Transcript of OpenShift Container Platform 3 - Red Hat Customer...
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 アダプターメトリクス
-
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 アダプターメトリクス
-
法律上の通知法律上の通知
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 アダプターメトリクス
-
目次目次
第第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 アダプターメトリクス
-
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 アダプターメトリクス
-
第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 アダプターメトリクス
-
エンドツーエンド認証
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 アダプターメトリクス
-
デプロイメントはフェデレーションされていない単一の 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 アダプターメトリクス
-
ロールベースアクセス制御機能 (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 アダプターメトリクス
-
以下のゲートウェイが作成される場合は次のコマンドを実行します
以下の 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 アダプターメトリクス
-
注記注記
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 アダプターメトリクス
-
お使いの 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 アダプターメトリクス
-
$ 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 アダプターメトリクス
-
コントロールプレーンをインストールするには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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
注記注記
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 アダプターメトリクス
-
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 アダプターメトリクス
-
表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 アダプターメトリクス
-
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 アダプターメトリクス
-
パラメーターパラメーター 説明説明 値値 デフォルト値デフォルト値
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 アダプターメトリクス
-
表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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
サービスメッシュインスタンスをインストールおよび設定する方法については「マルチテナント 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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
注記注記
この検証ステップの実行時に返される結果はクラスターのノードの数や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 アダプターメトリクス
-
特定する必要がありますほとんどのアプリケーションではこれは デフォルト のサービスアカウントですが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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
バージョン 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 アダプターメトリクス
-
$ 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 アダプターメトリクス
-
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 アダプターメトリクス
-
先の図のトレースは一部のネストされたスパンで構成されており各スパンは 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 アダプターメトリクス
-
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 アダプターメトリクス
-
$ 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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
サービスページではサービスそれらの健全性その他の詳細情報を検索し表示できます
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 アダプターメトリクス
-
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 アダプターメトリクス
-
前提条件
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 アダプターメトリクス
-
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 アダプターメトリクス
-
このダッシュボードにはワークロードのメトリクスとクライアント (インバウンド) およびサービス (アウトバウンド) ワークロードについてのメトリクスが表示されます別のワークロードに切り替えることができますインバウンドまたはアウトバウンドのワークロードでメトリクスをフィルターするにはダッシュボードの上部にあるメニューを使用します
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-
$ 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 アダプターメトリクス
-
以下のラベルをワークロードに追加して要求時にサービス 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 アダプターメトリクス
-
要求ヘッダー
要求パラメーター
要求ヘッダーとクエリーパラメーターの両方
注記注記
ヘッダーの値を指定する場合この値は小文字である必要がありますたとえばヘッダーを 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 アダプターメトリクス
-
アダプターが異なるクエリーパラメーターまたは要求ヘッダーを検査するようにする場合は名前を適宜変更しますたとえば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 アダプターメトリクス
-
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 アダプターメトリクス
-
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 アダプターメトリクス
-