2.3. Service Mesh のアップグレード
Red Hat OpenShift Service Mesh の最新機能にアクセスするには、最新バージョン 2.6.11 にアップグレードします。
2.3.1. バージョニングについて
Red Hat は、製品リリースにセマンティックバージョニングを使用します。セマンティックバージョニングは、X.Y.Z 形式の 3 つのコンポーネント番号になります。
- X はメジャーバージョンを表します。メジャーリリースには、通常、アーキテクチャーの変更、API の変更、スキーマの変更、および同様の大きな更新など、互換性を失わせる何らかの変更点があります。
- Y はマイナーバージョンを表します。マイナーリリースには、下位互換性を維持しながら、新しい機能が含まれています。
- Z はパッチバージョン (z-stream リリースとも呼ばれます) を表します。パッチリリースは、Common Vulnerabilities and Exposures (CVE) に対応し、バグ修正をリリースするために使用されます。通常、新機能はパッチリリースの一部としてリリースされません。
2.3.1.1. バージョニングが Service Mesh のアップグレードに与える影響
実行する更新のバージョンによって、アップグレードプロセスが異なります。
- パッチの更新: パッチのアップグレードは、Operator Lifecycle Manager (OLM) によって管理されます。Operator を更新すると自動的に発生します。
- 
								マイナーアップグレード: マイナーアップグレードでは、最新の Red Hat OpenShift Service Mesh Operator バージョンに更新することと、ServiceMeshControlPlaneリソースのspec.version値を手動で変更することの両方が必要です。
- 
								メジャーアップグレード: メジャーアップグレードでは、最新の Red Hat OpenShift Service Mesh Operator バージョンに更新することと、ServiceMeshControlPlaneリソースのspec.version値を手動で変更することの両方が必要です。メジャーアップグレードには後方互換性のない変更が含まれている可能性があるため、手動による追加の変更が必要になる場合があります。
2.3.1.2. Service Mesh のバージョンについて
ご使用のシステムにデプロイした Red Hat OpenShift Service Mesh のバージョンを理解するには、各コンポーネントのバージョンがどのように管理されるかを理解する必要があります。
- Operator バージョン - 最新の Operator バージョンは 2.6.11 です。Operator バージョン番号は、現在インストールされている Operator のバージョンのみを示します。Red Hat OpenShift Service Mesh Operator は Service Mesh コントロールプレーンの複数のバージョンをサポートするため、Operator のバージョンはデプロイされた - ServiceMeshControlPlaneリソースのバージョンを決定しません。重要- 最新の Operator バージョンにアップグレードすると、パッチの更新が自動的に適用されますが、Service Mesh コントロールプレーンは最新のマイナーバージョンに自動的にアップグレードされません。 
- ServiceMeshControlPlane バージョン: - ServiceMeshControlPlaneバージョンは、使用している Red Hat OpenShift Service Mesh のバージョンを決定します。- ServiceMeshControlPlaneリソースの- spec.versionフィールドの値は、Red Hat OpenShift Service Mesh のインストールとデプロイに使用されるアーキテクチャーと設定を制御します。Service Mesh コントロールプレーンを作成する場合は、以下の 2 つの方法のいずれかでバージョンを設定できます。- Form View で設定するには、Control Plane Version メニューからバージョンを選択します。
- 
										YAML View で設定するには、YAML ファイルに spec.versionの値を設定します。
 
						Operator Lifecycle Manager (OLM) は Service Mesh コントロールプレーンのアップグレードを管理しません。そのため、SMCP を手動でアップグレードした場合を除き、Operator と ServiceMeshControlPlane (SMCP) のバージョン番号が一致しないことがあります。
					
2.3.2. アップグレードに関する考慮事項
					maistra.io/ ラベルまたはアノテーションは、ユーザーが作成したカスタムリソースで使用することはできません。これは、Red Hat OpenShift Service Mesh Operator によってリソースが生成され、管理される必要があることを示すためです。
				
アップグレード時に、Operator はファイルの削除や置換などの変更を、リソースが Operator によって管理されることを示す以下のラベルまたはアノテーションを含むリソースに対して行います。
アップグレードする前に、ユーザーが作成したカスタムリソースで以下のラベルまたはアノテーションが含まれるか確認します。
- 
							maistra-istio-operator(Red Hat OpenShift Service Mesh) に設定されたmaistra.io/およびapp.kubernetes.io/managed-byラベル
- 
							kiali.io/(Kiali)
- 
							jaegertracing.io/(Red Hat OpenShift Distributed Tracing Platform (Jaeger))
- 
							logging.openshift.io/(Red Hat Elasticsearch)
アップグレードの前に、ユーザーが作成したカスタムリソースで、それらが Operator によって管理されることを示すラベルまたはアノテーションを確認します。Operator によって管理されないカスタムリソースからラベルまたはアノテーションを削除します。
バージョン 2.0 にアップグレードする場合、Operator は SMCP と同じ namespace で、これらのラベルを持つリソースのみを削除します。
バージョン 2.1 にアップグレードする場合、Operator はすべての namespace で、これらのラベルを持つリソースを削除します。
2.3.2.1. アップグレードに影響する可能性のある既知の問題
アップグレードに影響する可能性がある既知の問題には、次のものがあります。
- Operator をアップグレードする際に、Jaeger または Kiali のカスタム設定が元に戻される可能性があります。Operator をアップグレードする前に、Service Mesh の実稼働環境用デプロイメント内にある Jaeger オブジェクトまたは Kiali オブジェクトのカスタム設定をメモし、再作成できるようにしてください。
- 
								Red Hat OpenShift Service Mesh は、明示的に文書化されている場合を除き、EnvoyFilter設定の使用はサポートしていません。これは、下層の Envoy API と疎結合されており、後方互換性を保持できないためです。Envoy フィルターを使用していて、ServiceMeshControlPlaneのアップグレードによって導入された新しいバージョンの Envoy が原因で Istio によって生成された設定が変更された場合、実装したEnvoyFilterが壊れる可能性があります。
- 
								OSSM-1505 ServiceMeshExtensionは、OpenShift Container Platform バージョン 4.11 では機能しません。ServiceMeshExtensionは Red Hat OpenShift Service Mesh 2.2 で非推奨となったため、この既知の問題は修正されず、エクステンションをWasmPlugingに移行する必要があります。
- 
								OSSM-1396 ゲートウェイリソースに spec.externalIPs設定が含まれている場合、ゲートウェイは、ServiceMeshControlPlaneの更新時に再作成されずに削除され、再作成されることはありません。
- OSSM-1052 Service Mesh コントロールプレーンで入力ゲートウェイのサービス - ExternalIPを設定すると、サービスは作成されません。SMCP のスキーマには、サービスのパラメーターがありません。- 回避策: SMCP 仕様でゲートウェイの作成を無効にして、(サービス、ロール、および RoleBinding など) ゲートウェイのデプロイメントを完全に手動で管理します。 
2.3.3. Operator のアップグレード
Service Mesh に最新のセキュリティー修正、バグ修正、ソフトウェア更新を適用し続けるには、Operator を最新の状態に保つ必要があります。パッチの更新は、Operator をアップグレードすることで開始されます。
Operator のバージョンは、お使いの Service Mesh のバージョンを 判別しません。デプロイされた Service Mesh コントロールプレーンのバージョンによって、Service Mesh のバージョンが決まります。
					Red Hat OpenShift Service Mesh Operator は Service Mesh コントロールプレーンの複数のバージョンをサポートするため、Red Hat OpenShift Service Mesh Operator を更新しても、デプロイされた ServiceMeshControlPlane の spec.version 値は 更新されません。また、spec.version 値は 2 桁の数字 (2.2 など) であり、パッチの更新 (2.2.1 など) は SMCP バージョン値に反映されないことにも注意してください。
				
Operator Lifecycle Manager (OLM) は、クラスター内の Operator のインストール、アップグレード、ロールベースのアクセス制御 (RBAC) を制御します。OLM はデフォルトで OpenShift Container Platform で実行されます。OLM は利用可能な Operator のクエリーやインストールされた Operator のアップグレードを実行します。
Operator をアップグレードするためにアクションを実行する必要があるかどうかは、インストール時に選択した設定によって異なります。各 Operator をインストールしたときに、Update Channel および Approval Strategy を選択しました。これら 2 つの設定の組み合わせによって、Operator が更新されるタイミングと方法が決まります。
| バージョン付けされたチャネル | "Stable" または "Preview" チャネル | |
|---|---|---|
| 自動 | そのバージョンのみのマイナーリリースおよびパッチリリースの Operator を自動的に更新します。次のメジャーバージョン (バージョン 2.0 から 3.0) には、自動的に自動的に更新されません。次のメジャーバージョンに更新するために必要な Operator サブスクリプションを手動で変更します。 | すべてのメジャー、マイナーおよびパッチリリースについて、Operator を自動的に更新します。 | 
| 手動 | 指定したバージョンのマイナーおよびパッチリリースに必要な手動更新。次のメジャーバージョンに更新するために必要な Operator サブスクリプションを手動で変更します。 | すべてのメジャー、マイナー、およびパッチリリースについて、手動更新が必要になります。 | 
					Red Hat OpenShift Service Mesh Operator を更新すると、Operator Lifecycle Manager (OLM) は古い Operator Pod を削除し、新しい Pod を開始します。新しい Operator Pod が開始されると、調整プロセスは ServiceMeshControlPlane (SMCP) をチェックし、いずれかの Service Mesh コントロールプレーンコンポーネントの利用可能な更新されたコンテナーイメージがある場合は、それらの Service Mesh コントロールプレーン Pod を新しいコンテナーイメージを使用するものに置き換えます。
				
Kiali および Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator をアップグレードすると、OLM 調整プロセスによってクラスターがスキャンされ、管理対象インスタンスが新しい Operator のバージョンにアップグレードされます。たとえば、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator をバージョン 1.30.2 からバージョン 1.34.1 に更新する場合、Operator によって実行中の Distributed Tracing Platform (Jaeger) のインスタンスがスキャンされ、そのインスタンスも 1.34.1 にアップグレードされます。
Red Hat OpenShift Service Mesh の特定のパッチバージョンにとどまるには、自動更新を無効にして、Operator のその特定のバージョンにとどまる必要があります。
Operator のアップグレードに関する詳細は、Operator Lifecycle Manager のドキュメントを参照してください。
2.3.4. コントロールプレーンのアップグレード
マイナーおよびメジャーリリースのコントロールプレーンを手動で更新する必要があります。コミュニティーの Istio プロジェクトはカナリアアップグレードを推奨していますが、Red Hat OpenShift Service Mesh はインプレースアップグレードのみをサポートしています。Red Hat OpenShift Service Mesh では、各マイナーリリースから次のマイナーリリースに順番にアップグレードする必要があります。たとえば、バージョン 2.0 からバージョン 2.1 にアップグレードしてから、バージョン 2.2 にアップグレードする必要があります。Red Hat OpenShift Service Mesh 2.0 から 2.2 に直接更新することはできません。
Service Mesh コントロールプレーンをアップグレードすると、Operator が管理するすべてのリソース (ゲートウェイなど) もアップグレードされます。
					複数のバージョンのコントロールプレーンを同じクラスターにデプロイできますが、Red Hat OpenShift Service Mesh は、Service Mesh のカナリアアップグレードをサポートしていません。つまり、spec.version の値が異なるさまざまな SCMP リソースを使用できますが、同じメッシュを管理することはできません。
				
拡張機能の移行の詳細は、ServiceMeshExtension から WasmPlugin リソースへの移行 を参照してください。
2.3.4.1. バージョン 2.5 からバージョン 2.6 へのアップグレードの変更
2.3.4.1.1. Red Hat OpenShift Distributed Tracing Platform (Jaeger) のデフォルト設定の変更
							このリリースでは、ServiceMeshControlPlane リソースの新しいインスタンスに対して、Red Hat OpenShift Distributed Tracing Platform (Jaeger) がデフォルトで無効になります。
						
							ServiceMeshControlPlane リソースの既存のインスタンスを Red Hat OpenShift Service Mesh バージョン 2.6 に更新すると、Distributed Tracing Platform (Jaeger) はデフォルトで有効のままになります。
						
Red Hat OpenShift Service Mesh 2.6 は、Red Hat OpenShift Distributed Tracing Platform (Jaeger) と OpenShift Elasticsearch Operator のサポートが含まれる最後のリリースです。Distributed Tracing Platform (Jaeger) と OpenShift Elasticsearch Operator は両方とも次のリリースで削除されます。現在、Distributed Tracing Platform (Jaeger) と OpenShift Elasticsearch Operator を使用している場合は、Red Hat OpenShift Distributed Tracing Platform と Red Hat build of OpenTelemetry に移行する必要があります。
2.3.4.1.2. Envoy サイドカーコンテナーのデフォルト設定の変更
							Pod の起動時間を短縮するために、Istio ではサイドカーコンテナーに startupProbe がデフォルトで含まれるようになりました。Pod の readiness プローブは、Envoy サイドカーが起動するまで起動しません。
						
2.3.4.2. バージョン 2.4 から 2.5 へのアップグレードに伴う変更
2.3.4.2.1. Istio OpenShift Routing (IOR) のデフォルト設定の変更
Istio OpenShift Routing (IOR) のデフォルト設定が変更されました。この設定はデフォルトで無効になりました。
							ServiceMeshControlPlane リソースの spec.gateways.openshiftRoute 仕様で、enabled フィールドを true に設定することで、IOR を使用できます。
						
2.3.4.2.2. Istio プロキシー同時実行設定の強化
							デプロイメント間の一貫性を確保するために、Istio はプロキシーコンテナーに割り当てられた CPU 制限に基づいて concurrency パラメーターを設定するようになりました。たとえば、制限が 2500m の場合、concurrency パラメーターは 3 に設定されます。concurrency パラメーターを別の値に設定すると、Istio は CPU 制限を使用する代わりに、その値を使用してプロキシーが実行するスレッドの数を設定します。
						
以前のリリースでは、このパラメーターのデフォルト設定は 2 でした。
2.3.4.3. バージョン 2.3 から 2.4 へのアップグレードに伴う変更
Service Mesh コントロールプレーンをバージョン 2.3 から 2.4 にアップグレードすると、次の動作変更が導入されます。
- Istio OpenShift Routing (IOR) のサポートは非推奨になりました。IOR 機能は引き続き有効ですが、将来のリリースでは削除される予定です。
- 次の暗号スイートはサポートされなくなり、クライアント側とサーバー側の TLS ネゴシエーションで使用される暗号のリストから削除されました。 - ECDHE-ECDSA-AES128-SHA
- ECDHE-RSA-AES128-SHA
- AES128-GCM-SHA256
- AES128-SHA
- ECDHE-ECDSA-AES256-SHA
- ECDHE-RSA-AES256-SHA
- AES256-GCM-SHA384
- AES256-SHA - これらの暗号スイートのいずれかを使用するサービスにアクセスする必要があるアプリケーションは、プロキシーが TLS 接続を開始すると接続に失敗します。 
 
2.3.4.4. バージョン 2.2 から 2.3 へのアップグレードに伴う変更
Service Mesh コントロールプレーンをバージョン 2.2 から 2.3 にアップグレードすると、次の動作変更が導入されます。
- 
								このリリースでは、WasmPluginAPI を使用する必要があります。2.2 で非推奨となったServiceMeshExtensionAPI のサポートは削除されました。ServiceMeshExtensionAPI の使用中にアップグレードを試みると、アップグレードは失敗します。
2.3.4.5. バージョン 2.1 から 2.2 へのアップグレードに伴う変更
Service Mesh コントロールプレーンをバージョン 2.1 から 2.2 にアップグレードすると、次の動作変更が導入されます。
- 
								istio-nodeDaemonSet は、アップストリームの Istio の名前と一致するようにistio-cni-nodeに名前が変更されました。
- 
								Istio 1.10 は、デフォルトで loではなくeth0を使用してトラフィックをアプリケーションコンテナーに送信するように Envoy を更新しました。
- 
								このリリースでは、WasmPluginAPI のサポートが追加され、ServiceMeshExtensionが非推奨になりました。
2.3.4.6. バージョン 2.0 から 2.1 へのアップグレードに伴う変更
Service Mesh コントロールプレーンをバージョン 2.0 から 2.1 にアップグレードすると、以下のアーキテクチャーおよび動作上の変更が導入されます。
アーキテクチャーの変更
Mixer は Red Hat OpenShift Service Mesh 2.1 で完全に削除されました。Red Hat OpenShift Service Mesh 2.0.x リリースから 2.1 へのアップグレードは、Mixer が有効な場合にブロックされます。
						v2.0 から v2.1 にアップグレード時に以下のメッセージが表示される場合は、.spec.version フィールドを更新する前に、既存のコントロールプレーン仕様にすでに存在する Mixer タイプを Istiod タイプに更新します。
					
An error occurred admission webhook smcp.validation.maistra.io denied the request: [support for policy.type "Mixer" and policy.Mixer options have been removed in v2.1, please use another alternative, support for telemetry.type "Mixer" and telemetry.Mixer options have been removed in v2.1, please use another alternative]”
An error occurred
admission webhook smcp.validation.maistra.io denied the request: [support for policy.type "Mixer" and policy.Mixer options have been removed in v2.1, please use another alternative, support for telemetry.type "Mixer" and telemetry.Mixer options have been removed in v2.1, please use another alternative]”以下に例を示します。
動作上の変更
- AuthorizationPolicyの更新- 
										PROXY プロトコルでは、ipBlocksおよびnotIpBlocksを使用してリモート IP アドレスを指定する場合は、代わりにremoteIpBlocksおよびnotRemoteIpBlocksを使用するように設定を更新します。
- ネストされた JSON Web Token(JWT) 要求のサポートが追加されました。
 
- 
										PROXY プロトコルでは、
- EnvoyFilterの重大な変更- 
										typed_configを使用する必要があります。
- xDS v2 はサポート対象外になりました。
- フィルター名が非推奨になりました。
 
- 
										
- 以前のバージョンのプロキシーは、新しいプロキシーから 1xx または 204 ステータスコードを受信すると、503 ステータスコードを報告する場合があります。
2.3.4.7. Service Mesh コントロールプレーンのアップグレード
						Red Hat OpenShift Service Mesh をアップグレードするには、Red Hat OpenShift Service Mesh ServiceMeshControlPlane v2 リソースのバージョンフィールドを更新する必要があります。次に、設定と適用が完了したら、アプリケーション Pod を再起動して各サイドカープロキシーとその設定を更新します。
					
前提条件
- OpenShift Container Platform 4.9 以降を実行している。
- 最新の Red Hat OpenShift Service Mesh Operator がある。
手順
- ServiceMeshControlPlaneリソースが含まれるプロジェクトに切り替えます。この例では、- istio-systemが Service Mesh コントロールプレーンプロジェクトの名前となります。- oc project istio-system - $ oc project istio-system- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- v2 - ServiceMeshControlPlaneリソース設定をチェックし、これが有効であることを確認します。- 以下のコマンドを実行して、 - ServiceMeshControlPlaneリソースを v2 リソースとして表示します。- oc get smcp -o yaml - $ oc get smcp -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- Service Mesh コントロールプレーン設定をバックアップします。 
 
- .spec.versionフィールドを更新し、設定を適用します。- 以下に例を示します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - または、コマンドラインの代わりに Web コンソールを使用して Service Mesh コントロールプレーンを編集することもできます。OpenShift Container Platform Web コンソールで、Project をクリックし、入力したプロジェクト名を選択します。 - 
										Operators Installed Operators をクリックします。 
- 
										ServiceMeshControlPlaneインスタンスを見つけます。
- YAML view を選択し、直前の例のように YAML ファイルのテキストを更新します。
- Save をクリックします。
 
- 
										Operators 
2.3.4.8. Red Hat OpenShift Service Mesh のバージョン 1.1 からバージョン 2.0 への移行
バージョン 1.1 から 2.0 にアップグレードするには、ワークロードおよびアプリケーションを新規バージョンを実行する Red Hat OpenShift Service Mesh の新規インスタンスに移行する手動の手順が必要です。
前提条件
- OpenShift Container Platform 4.7 にアップグレードしてから Red Hat OpenShift Service Mesh 2.0 にアップグレードする必要があります。
- Red Hat OpenShift Service Mesh のバージョン 2.0 Operator が必要です。自動 アップグレードパスを選択した場合、Operator は最新情報を自動的にダウンロードします。ただし、Red Hat OpenShift Service Mesh バージョン 2.0 で機能を使用するために実行する必要のある手順があります。
2.3.4.8.1. Red Hat OpenShift Service Mesh のアップグレード
							Red Hat OpenShift Service Mesh をアップグレードするには、新規の namespace に Red Hat OpenShift Service Mesh ServiceMeshControlPlane 2.0 リソースのインスタンスを作成する必要があります。次に、設定後にマイクロサービスアプリケーションおよびワークロードを古いメッシュから新規の Service Mesh に移動します。
						
手順
- v1 - ServiceMeshControlPlaneリソース設定をチェックし、これが有効であることを確認します。- 以下のコマンドを実行して、 - ServiceMeshControlPlaneリソースを v2 リソースとして表示します。- oc get smcp -o yaml - $ oc get smcp -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
											無効なフィールドの情報は、出力の spec.techPreview.errored.messageフィールドを確認してください。
- v1 リソースに無効なフィールドがある場合は、リソースは調整されず、v2 リソースとして編集することはできません。v2 フィールドへの更新はすべて、元の v1 設定で上書きされます。無効なフィールドを修正するには、リソースの v1 バージョンを置き換えるか、パッチを適用するか、編集できます。リソースを修正せずに削除することもできます。リソースの修正後に調整でき、リソースの v2 バージョンを変更または表示できます。
- ファイルを編集してリソースを修正するには、 - oc getを使用してリソースを取得し、テキストファイルをローカルで編集し、リソースを編集したファイルに置き換えます。- oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml oc replace -f smcp-resource.yaml - $ oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml #Edit the smcp-resource.yaml file. $ oc replace -f smcp-resource.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- パッチを使用してリソースを修正するには、 - oc patchを使用します。- oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op": "replace","path":"/spec/path/to/bad/setting","value":"corrected-value"}]'- $ oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op": "replace","path":"/spec/path/to/bad/setting","value":"corrected-value"}]'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- コマンドラインツールで編集してリソースを修正するには、 - oc editを使用します。- oc edit smcp.v1.maistra.io <smcp_name> - $ oc edit smcp.v1.maistra.io <smcp_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Service Mesh コントロールプレーン設定をバックアップします。 - ServiceMeshControlPlaneリソースが含まれるプロジェクトに切り替えます。この例では、- istio-systemが Service Mesh コントロールプレーンプロジェクトの名前となります。- oc project istio-system - $ oc project istio-system- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下のコマンドを実行して、現在の設定を取得します。<smcp_name> は - ServiceMeshControlPlaneリソースのメタデータに指定されます (例:- basic-installまたは- full-install)。- oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml - $ oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ServiceMeshControlPlaneを、開始点としての設定に関する情報が含まれる v2 のコントロールプレーンバージョンに変換します。- oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml - $ oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- プロジェクトを作成します。OpenShift Container Platform コンソールの Project メニューで、 - New Projectをクリックし、プロジェクトの名前 (例:- istio-system-upgrade) を入力します。または、CLI からこのコマンドを実行できます。- oc new-project istio-system-upgrade - $ oc new-project istio-system-upgrade- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
									v2 ServiceMeshControlPlaneのmetadata.namespaceフィールドを新規のプロジェクト名で更新します。この例では、istio-system-upgradeを使用します。
- 
									versionフィールドを 1.1 から 2.0 に更新するか、v2ServiceMeshControlPlaneでこれを削除します。
- 新規 namespace に - ServiceMeshControlPlaneを作成します。コマンドラインで以下のコマンドを実行し、取得した- ServiceMeshControlPlaneの v2 バージョンでコントロールプレーンをデプロイします。この例の `<smcp_name.v2>` は、実際のファイルへのパスに置き換えます。- oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml - $ oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - または、コンソールを使用して Service Mesh コントロールプレーンを作成することもできます。OpenShift Container Platform Web コンソールで、Project をクリックします。次に、入力したプロジェクト名を選択します。 - 
											Operators Installed Operators をクリックします。 
- Create ServiceMeshControlPlane をクリックします。
- 
											YAML view を選択し、取得した YAML ファイルのテキストをフィールドに貼り付けます。apiVersionフィールドがmaistra.io/v2に設定されていることを確認し、metadata.namespaceフィールドを新規 namespace (例:istio-system-upgrade) を使用するように変更します。
- Create をクリックします。
 
- 
											Operators 
2.3.4.8.2. 2.0 ServiceMeshControlPlane の設定
							ServiceMeshControlPlane リソースは Red Hat OpenShift Service Mesh バージョン 2.0 用に変更されました。ServiceMeshControlPlane リソースの v2 バージョンを作成したら、新機能を利用し、デプロイメントを適合させるようにこれを変更します。ServiceMeshControlPlane リソースを変更するため、Red Hat OpenShift Service Mesh 2.0 の仕様および動作に以下の変更を加えることを検討してください。使用する機能の更新情報は、Red Hat OpenShift Service Mesh 2.0 の製品ドキュメントを参照してください。v2 リソースは、Red Hat OpenShift Service Mesh 2.0 インストールに使用する必要があります。
						
2.3.4.8.2.1. アーキテクチャーの変更
以前のバージョンで使用されるアーキテクチャーのユニットは Istiod によって置き換えられました。2.0 では、Service Mesh コントロールプレーンのコンポーネント Mixer、Pilot、Citadel、Galley、およびサイドカーインジェクター機能が単一のコンポーネントである Istiod に統合されました。
Mixer はコントロールプレーンコンポーネントとしてサポートされなくなりましたが、Mixer ポリシーおよび Telemetry プラグインは Istiod の WASM 拡張でサポートされるようになりました。レガシー Mixer プラグインを統合する必要がある場合は、ポリシーと Telemetry に対して Mixer を有効にできます。
シークレット検出サービス (SDS) は、証明書とキーを Istiod からサイドカーコンテナーに直接配信するために使用されます。Red Hat OpenShift Service Mesh バージョン 1.1 では、シークレットはクライアント証明書およびキーを取得するためにプロキシーによって使用される Citadel で生成されました。
2.3.4.8.2.2. アノテーションの変更
v2.0 では、以下のアノテーションに対応しなくなりました。これらのアノテーションのいずれかを使用している場合は、これを v2.0 Service Mesh コントロールプレーンに移行する前にワークロードを更新する必要があります。
- 
										sidecar.maistra.io/proxyCPULimitはsidecar.istio.io/proxyCPULimitに置き換えられました。ワークロードでsidecar.maistra.ioアノテーションを使用していた場合は、代わりにsidecar.istio.ioを使用するようにこれらのワークロードを変更する必要があります。
- 
										sidecar.maistra.io/proxyMemoryLimitがsidecar.istio.io/proxyMemoryLimitに置き換えられました。
- 
										sidecar.istio.io/discoveryAddressはサポートされなくなりました。また、デフォルトの検出アドレスがpilot.<control_plane_namespace>.svc:15010(または mtls が有効にされている場合はポート 15011) からistiod-<smcp_name>.<control_plane_namespace>.svc:15012に移行しました。
- 
										ヘルスステータスポートは設定できなくなり、15021 にハードコーディングされています。* カスタムステータスポート (例: status.sidecar.istio.io/port) を定義している場合は、ワークロードを v2.0 Service Mesh コントロールプレーンに移行する前にオーバーライドを削除する必要があります。ステータスポートを0に設定すると、readiness チェックを依然として無効にできます。
- Kubernetes シークレットリソースは、サイドカーのクライアント証明書を配信するために使用されなくなりました。証明書は Istiod の SDS サービスを介して配信されるようになりました。マウントされたシークレットに依存している場合、それらは v2.0 Service Mesh コントロールプレーンのワークロードで利用不可になります。
2.3.4.8.2.3. 動作上の変更
Red Hat OpenShift Service Mesh 2.0 の機能の一部は、以前のバージョンの機能とは異なります。
- 
										ゲートウェイの readiness ポートは 15020から15021に移行しました。
- ターゲットホストの可視性には、VirtualService と ServiceEntry リソースが含まれます。これには、Sidecar リソースを介して適用される制限が含まれます。
- 自動の相互 TLS はデフォルトで有効になります。プロキシー間の通信は、実施されているグローバルの PeerAuthentication ポリシーに関係なく、mTLS を使用するように自動的に設定されます。
- 
										セキュアな接続は、spec.security.controlPlane.mtls設定に関係なく、プロキシーが Service Mesh コントロールプレーンと通信する際に常に使用されます。spec.security.controlPlane.mtls設定は、Mixer Telemetry またはポリシーの接続を設定する場合にのみ使用されます。
2.3.4.8.2.4. サポート対象外のリソースの移行情報
Policy (authentication.istio.io/v1alpha1)
Policy リソースは、v2.0 Service Mesh コントロールプレーン、PeerAuthentication および RequestAuthentication で使用するために新規リソースタイプに移行する必要があります。Policy リソースの特定の設定によっては、同じ効果を実現するために複数のリソースを設定しなければならない場合があります。
相互 TLS
									相互 TLS は、security.istio.io/v1beta1 PeerAuthentication リソースを使用して実行されます。レガシーの spec.peers.mtls.mode フィールドは、新規リソースの spec.mtls.mode フィールドに直接マップされます。選定基準は、spec.targets[x].name のでのサービス名の指定から spec.selector.matchLabels のラベルセレクターに変更されました。PeerAuthentication では、ラベルは、ターゲットリストで名前が指定されたサービスのセレクターと一致する必要があります。ポート固有の設定は spec.portLevelMtls にマップされる必要があります。
								
認証
									spec.origins に指定される追加の認証方法は、security.istio.io/v1beta1 RequestAuthentication リソースにマップされる必要があります。spec.selector.matchLabels は PeerAuthentication の同じフィールドに対して同様に設定される必要があります。spec.origins.jwt アイテムからの JWT プリンシパルに固有の設定は、spec.rules アイテムの同様のフィールドにマップされます。
								
- 
										Policy で指定される spec.origins[x].jwt.triggerRulesは 1 つ以上のsecurity.istio.io/v1beta1AuthorizationPolicy リソースにマップされる必要があります。spec.selector.labelsは、RequestAuthentication の同じフィールドに対して同様に設定される必要があります。
- 
										spec.origins[x].jwt.triggerRules.excludedPathsは AuthorizationPolicy にマップされる必要があります。ここで、spec.rules[x].to.operation.pathエントリーは除外されたパスに一致する状態で spec.action が ALLOW に設定されます。
- 
										spec.origins[x].jwt.triggerRules.includedPathsは別個の AuthorizationPolicy にマップされる必要があります。ここで、spec.rules[x].to.operation.pathエントリーは組み込まれるパスに一致し、specified spec.origins[x].jwt.issuerと一致するspec.rules.[x].from.source.requestPrincipalsエントリーが Policy リソースにある状態で、spec.actionがALLOWに設定されます。
ServiceMeshPolicy (maistra.io/v1)
									ServiceMeshPolicy は、v1 リソースの spec.istio.global.mtls.enabled または v2 リソース設定の spec.security.dataPlane.mtls で Service Mesh コントロールプレーンに自動的に設定されています。v2 コントロールプレーンの場合は、機能的に同等の PeerAuthentication リソースがインストール時に作成されます。この機能は、Red Hat OpenShift Service Mesh バージョン 2.0 で非推奨となりました。
								
RbacConfig, ServiceRole, ServiceRoleBinding (rbac.istio.io/v1alpha1)
									これらのリソースは security.istio.io/v1beta1 AuthorizationPolicy リソースに置き換えられました。
								
RbacConfig の動作をコピーするには、RbacConfig で指定される spec.mode に依存するデフォルトの AuthorizationPolicy を作成する必要があります。
- 
										spec.modeがOFFに設定されている場合は、AuthorizationPolicy が要求に適用されない限り、デフォルトのポリシーが ALLOW であるためリソースは必要ありません。
- 
										spec.modeが ON に設定されている場合は、spec: {}を設定します。メッシュ内のすべてのサービスに対して AuthorizationPolicy ポリシーを作成する必要があります。
- 
										spec.modeがON_WITH_INCLUSIONに設定されていると、spec: {}が組み込まれている各 namespace に指定された状態で AuthorizationPolicy を作成する必要があります。AuthorizationPolicy では、個別のサービスを含めることはサポートされません。ただし、サービスのワークロードに適用される AuthorizationPolicy が作成されるとすぐに、明示的に許可されない他のすべての要求は拒否されます。
- 
										spec.modeがON_WITH_EXCLUSIONに設定されていると、これは AuthorizationPolicy によってサポートされません。グローバル DENY ポリシーを作成できますが、namespace またはワークロードのいずれかに適用できる allow-all ポリシーがないため、メッシュ内のすべてのワークロードに対して AuthorizationPolicy を作成する必要があります。
AuthorizationPolicy には、ServiceRoleBinding が提供する機能と同様の、設定が適用されるセレクターと、ServiceRole が提供する機能と同様の、適用する必要のあるルールの両方の設定が含まれます。
ServiceMeshRbacConfig (maistra.io/v1)
									このリソースは、Service Mesh コントロールプレーンの namespace で security.istio.io/v1beta1 AuthorizationPolicy リソースを使用して置き換えられます。このポリシーは、メッシュ内のすべてのワークロードに適用されるデフォルトの認証ポリシーになります。特定の移行の詳細は、上記の RbacConfig を参照してください。
								
2.3.4.8.2.5. Mixer プラグイン
								Mixer コンポーネントは、バージョン 2.0 ではデフォルトで無効にされます。ワークロードで Mixer プラグインを使用する場合は、Mixer コンポーネントを含めるようにバージョン 2.0 ServiceMeshControlPlane を設定する必要があります。
							
								Mixer ポリシーコンポーネントを有効にするには、以下のスニペットを ServiceMeshControlPlane に追加します。
							
spec:
  policy:
    type: Mixer
spec:
  policy:
    type: Mixer
								Mixer Telemetry コンポーネントを有効にするには、以下のスニペットを ServiceMeshControlPlane に追加します。
							
spec:
  telemetry:
    type: Mixer
spec:
  telemetry:
    type: Mixerレガシーの Mixer プラグインは、新しい ServiceMeshExtension (maistra.io/v1alpha1) カスタムリソースを使用して WASM に移行し、統合することもできます。
アップストリーム Istio ディストリビューションに含まれるビルトインの WASM フィルターは Red Hat OpenShift Service Mesh 2.0 では利用できません。
2.3.4.8.2.6. 相互 TLS の変更
ワークロード固有の PeerAuthentication ポリシーで mTLS を使用する場合は、ワークロードポリシーが namespace/グローバルポリシーと異なる場合にトラフィックを許可するために、対応する DestinationRule が必要になります。
								自動 mTLS はデフォルトで有効になっていますが、spec.security.dataPlane.automtls を ServiceMeshControlPlane リソースで false に設定して無効にできます。auto mTLS を無効にする場合は、サービス間の適切な通信のために DestinationRules が必要になる場合があります。たとえば、1 つの namespace に対して PeerAuthentication を STRICT に設定すると、DestinationRule が namespace のサービスに TLS モードを設定しない限り、他の namespace のサービスがそれらにアクセスできなくなります。
							
mTLS に関する詳細は、相互トランスポート層セキュリティー (mTLS) の有効化 を参照してください。
2.3.4.8.2.6.1. その他の mTLS の例
info サンプルアプリケーションで mTLS For productpage サービスを無効にするため、Red Hat OpenShift Service Mesh v1.1 に対して以下の方法 Policy リソースが設定されました。
Policy リソースの例
info サンプルアプリケーションで mTLS For productpage サービスを無効にするために、以下の例を使用して Red Hat OpenShift Service Mesh v2.0 の PeerAuthentication リソースを設定します。
PeerAuthentication リソースの例
									info サンプルアプリケーションで productpage サービスの mTLS With JWT 認証を有効にするために、Policy リソースが Red Hat OpenShift Service Mesh v1.1 に対して設定されました。
								
Policy リソースの例
info サンプルアプリケーションの productpage サービスの mTLS With JWT 認証を有効にするために、以下の例を使用して Red Hat OpenShift Service Mesh v2.0 の PeerAuthentication リソースを設定します。
PeerAuthentication リソースの例
2.3.4.8.3. 設定レシピ
これらの設定レシピを使用して、以下の項目を設定できます。
2.3.4.8.3.1. データプレーンでの相互 TLS
								データプレーン通信の相互 TLS は、ServiceMeshControlPlane リソースの spec.security.dataPlane.mtls で設定されます。これはデフォルトは false になります。
							
2.3.4.8.3.2. カスタム署名キー
Istiod は、サービスプロキシーによって使用されるクライアント証明書とプライベートキーを管理します。デフォルトで、Istiod は署名用に自己署名証明書を使用しますが、カスタム証明書とシークレットキーを設定できます。署名するキーの設定方法に関する詳細は、外部認証局キーおよび証明書の追加 を参照してください。
2.3.4.8.3.3. トレーシング
								トレースは spec.tracing で設定されます。現在、サポートされるトレーサーの唯一のタイプは Jaeger です。サンプリングは 0.01% の増分 (例: 1 は 0.01%、10000 は 100%) を表すスケーリングされた整数です。トレースの実装およびサンプリングレートを指定できます。
							
spec:
  tracing:
    sampling: 100 # 1%
    type: Jaeger
spec:
  tracing:
    sampling: 100 # 1%
    type: Jaeger
								Jaeger は、ServiceMeshControlPlane リソースの addons セクションで設定します。
							
								Jaeger インストールは install フィールドでカスタマイズできます。リソース制限などのコンテナー設定は、spec.runtime.components.jaeger の関連フィールドに設定されます。spec.addons.jaeger.name の値に一致する Jaeger リソースが存在する場合は、Service Mesh コントロールプレーンは既存のインストールを使用するように設定されます。既存の Jaeger リソースを使用して Jaeger インストールを完全にカスタマイズします。
							
2.3.4.8.3.4. 可視化
								Kiali および Grafana は、ServiceMeshControlPlane リソースの addons セクションで設定されます。
							
								Grafana および Kiali のインストールは、それぞれの install フィールドでカスタマイズできます。リソース制限などのコンテナーのカスタマイズは、spec.runtime.components.kiali および spec.runtime.components.grafana で設定されます。name の値に一致する既存の Kiali リソースが存在する場合、Service Mesh コントロールプレーンはコントロールプレーンで使用するように Kiali リソースを設定します。accessible_namespaces 一覧や Grafana、Prometheus、およびトレースのエンドポイントなどの Kiali リソースの一部のフィールドは上書きされます。既存のリソースを使用して Kiali インストールを完全にカスタマイズします。
							
2.3.4.8.3.5. リソース使用状況とスケジューリング
								リソースは spec.runtime.<component> で設定されます。以下のコンポーネント名がサポートされます。
							
| コンポーネント | 説明 | サポート対象バージョン | 
|---|---|---|
| セキュリティー | Citadel コンテナー | v1.0/1.1 | 
| galley | Galley コンテナー | v1.0/1.1 | 
| pilot | Pilot/Istiod コンテナー | v1.0/1.1/2.0 | 
| mixer | istio-telemetry および istio-policy コンテナー | v1.0/1.1 | 
| 
												 | istio-policy コンテナー | v2.0 | 
| 
												 | istio-telemetry コンテナー | v2.0 | 
| 
												 | 各種アドオンと共に使用する oauth-proxy コンテナー | v1.0/1.1/2.0 | 
| 
												 | サイドカーインジェクター Webhook コンテナー | v1.0/1.1 | 
| 
												 | 一般的な Jaeger コンテナー: すべての設定が適用されない可能性があります。Jaeger インストールの完全なカスタマイズは、既存の Jaeger リソースを Service Mesh コントロールプレーンの設定に指定することでサポートされます。 | v1.0/1.1/2.0 | 
| 
												 | Jaeger エージェントに固有の設定 | v1.0/1.1/2.0 | 
| 
												 | Jaeger allInOne に固有の設定 | v1.0/1.1/2.0 | 
| 
												 | Jaeger コレクターに固有の設定 | v1.0/1.1/2.0 | 
| 
												 | Jaeger elasticsearch デプロイメントに固有の設定 | v1.0/1.1/2.0 | 
| 
												 | Jaeger クエリーに固有の設定 | v1.0/1.1/2.0 | 
| prometheus | prometheus コンテナー | v1.0/1.1/2.0 | 
| kiali | Kiali コンテナー: Kiali インストールの完全なカスタマイズは、既存の Kiali リソースを Service Mesh コントロールプレーン設定に指定してサポートされます。 | v1.0/1.1/2.0 | 
| grafana | Grafana コンテナー | v1.0/1.1/2.0 | 
| 3scale | 3scale コンテナー | v1.0/1.1/2.0 | 
| 
												 | WASM 拡張キャッシュコンテナー | V2.0: テクノロジープレビュー | 
コンポーネントによっては、リソースの制限およびスケジューリングをサポートするものもあります。詳細は、パフォーマンスおよびスケーラビリティー を参照してください。
2.3.4.8.4. アプリケーションとワークロードを移行するための次の手順
アプリケーションのワークロードを新規のメッシュに移動し、古いインスタンスを削除してアップグレードを完了します。
2.3.5. データプレーンのアップグレード
コントロールプレーンをアップグレードした後も、データプレーンは引き続き機能します。ただし、Envoy プロキシーに更新を適用し、プロキシー設定に変更を適用するには、アプリケーション Pod とワークロードを再起動する必要があります。
2.3.5.1. アプリケーションおよびワークロードの更新
移行を完了するには、メッシュ内のすべてのアプリケーション Pod を再起動して、Envoy サイドカープロキシーおよびそれらの設定をアップグレードします。
デプロイメントのローリング更新を実行するには、以下のコマンドを使用します。
oc rollout restart <deployment>
$ oc rollout restart <deployment>メッシュを設定するすべてのアプリケーションに対してローリング更新を実行する必要があります。