第2章 OpenShift Service Mesh について
Red Hat OpenShift Service Mesh は 2 つの部分で構成されています。
- Red Hat OpenShift Service Mesh リソース
- Red Hat が提供する Kiali
Red Hat が提供する Kali は、次の 3 つの部分で構成されています。
- Red Hat が提供する Kiali Operator
- Kiali Server
- OpenShift Service Mesh Console (OSSMC) プラグイン
OpenShift Service Mesh は以下と統合されます。
以下のような可観測性コンポーネント
- OpenShift Monitoring
- Red Hat OpenShift 分散トレースプラットフォーム
- Red Hat OpenShift distributed tracing data collection Operator
- cert-manager
- Argo rollouts
2.1. Red Hat OpenShift Service Mesh リソース リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service Mesh Operator は Istio コントロールプレーンのライフサイクルを管理します。新しい設定スキーマを作成する代わりに、OpenShift Service Mesh Operator API は Istio の Helm チャート API を中心に構築されます。
- Red Hat OpenShift Service Mesh API は Istio の Helm チャート API 上に構築されていますが、Helm チャートはサポートされていません。
-
Istio の Helm チャートによって公開されるすべてのインストールおよび設定オプションは、Red Hat OpenShift Service Mesh カスタムリソース定義 (CRD)
値
フィールドを通じて利用できます。
2.1.1. Istio リソース リンクのコピーリンクがクリップボードにコピーされました!
Istio
リソースは、Istio コントロールプレーンを管理するために使用されます。Istio コントロールプレーンはクラスター全体で動作し、クラスター全体へのアクセスを必要とするため、これはクラスター全体のリソースです。
コントロールプレーン Pod を実行する namespace を選択するには、spec.namespace
フィールドを使用できます。
spec.namespace
フィールドは不変です。コントロールプレーンを別の namespace に移動するには、Istio
リソースを削除し、別の spec.namespace
で再作成する必要があります。
spec.values
フィールドを通じて、すべての Istio
カスタムリソース定義 (CRD) オプションにアクセスできます。
Istio
リソース CRD の例
すべてのカスタマイズオプションを表示するには、次のコマンドを実行します。
oc explain istios.spec.values
$ oc explain istios.spec.values
OpenShift Service Mesh は、コントロールプレーンのカナリア更新を実行するために、複数の Istio バージョンをサポートしています。フルバージョンを使用するか、v<x>.<y>-latest
エイリアスを使用して特定のマイナーバージョンの最新バージョンを自動的に選択することにより、version
フィールドを新しいバージョンに設定できます。たとえば、v1.23-latest
を設定すると、Operator が Istio 1.23 の最新バージョンを維持するようになります。
OpenShift Service Mesh は、コントロールプレーンに対して 2 つの異なる更新ストラテジーをサポートしています。
InPlace
- OpenShift Service Mesh Operator は、既存のコントロールプレーンリソースを新しいバージョンのものにすぐに置き換えます。
RevisionBased
- ワークロードを移行して更新を完了できる 2 番目のコントロールプレーンを作成して Istio のカナリア更新メカニズムを使用します。
Istio リソースを作成した後、OpenShift Service Mesh は updateStrategy
に基づいてリソースのリビジョン名を生成し、対応する IstioRevision
を作成します。
2.1.2. IstioRevision リソース リンクのコピーリンクがクリップボードにコピーされました!
IstioRevision
は、クラスター全体のリソースであり、OpenShift Service Mesh が提供する最も低レベルの API です。通常、これはユーザーによってではなく、Operator 自身によって作成されます。そのスキーマは Istio
リソースのスキーマとよく似ていますが、クラスター内に存在するコントロールプレーンの状態を表すのではなく、そのコントロールプレーンのリビジョンを表します。
クラスター内に存在するコントロールプレーンのリビジョンは、特定のバージョンとリビジョン名を持つ Istio のインスタンスであり、そのリビジョン名を使用して、メッシュにワークロードまたは namespace 全体を追加できます。たとえば、istio.io/rev=<REVISION_NAME>
ラベルを使用します。
Istio
と IstioRevision
リソースの関係は、Kubernetes のレプリカセットと Pod の関係に似ていると考えることができます。レプリカセットはユーザーが作成でき、Pod が自動的に作成され、コンテナーのインスタンス化がトリガーされます。
同様に、ユーザーは Istio
リソースを作成し、OpenShift Service Mesh Operator に一致する IstioRevision
リソースを作成するように指示します。これにより、Istio コントロールプレーンの作成がトリガーされます。これを行うには、OpenShift Service Mesh Operator は、関連するすべての設定を Istio
リソースから IstioRevision
リソースにコピーします。
2.1.3. IstioRevisionTag リソース リンクのコピーリンクがクリップボードにコピーされました!
IstioRevisionTag
リソースは、Istio コントロールプレーンリビジョンのエイリアスとして機能する stable リビジョンタグを表します。stable タグ prod
では、istio.io/rev=prod
ラベルを使用して、ワークロードにプロキシーを挿入できます。新しいリビジョン名でコントロールプレーンへのアップグレードを実行する場合、ワークロードと namespace のラベルを変更する代わりに、タグを更新して新しいリビジョンを参照できます。詳細は、Stable revision labels (Istio ドキュメント) を参照してください。
IstioRevisionTag
リソースは OpenShift Service Mesh Operator で使用できます。したがって、IstioRevision
と Istio
リソースの両方を参照できます。Istio
リソースを使用する場合、コントロールプレーンを更新すると、基盤となる IstioRevision
リソースが変更され、OpenShift Service Mesh Operator によってリビジョンタグが自動的に更新されます。新しいプロキシーを再挿入するには、デプロイメントを再起動するだけです。
IstioRevisionTag
の spec:0
には、targetRef
フィールドが 1 つあり、Istio
または IstioRevision
リソースを参照できます。IstioRevisionTag
をデプロイした後、istio.io/rev=default
と istio-injection=enabled
ラベルの両方を使用して、ワークロードにプロキシーを挿入できます。
2.1.4. IstioCNI リソース リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Service Mesh Operator を使用する場合、Istio の Container Network Interface (CNI) プラグインのライフサイクルは別に管理されます。Istio の CNI プラグインをインストールするには、IstioCNI
リソースを作成します。
IstioCNI
リソースは、クラスターのすべてのノードで動作するデーモンセットをインストールするため、クラスター全体のリソースです。次の例に示すように、spec.version
フィールドを設定することでバージョンを選択できます。CNI プラグインを更新するには、バージョンフィールドをインストールするバージョンに変更します。Istio
リソースと同様に、istio-cni
チャートで提供されるすべてのオプションを公開する values
フィールドもあります。
IstioCNI
リソースの例