第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 の例
apiVersion: sailoperator.io/v1alpha1 kind: Istio metadata: name: default spec: version: v1.22.3 namespace: istio-system updateStrategy: type: InPlace values: pilot: resources: requests: cpu: 100m memory: 1024Mi
すべてのカスタマイズオプションを表示するには、次のコマンドを実行します。
$ oc explain istios.spec.values
コントロールプレーンのカナリア更新をサポートするために、OpenShift Service Mesh には、複数の Istio バージョンのサポートが含まれています。インストールするバージョンに接頭辞 v
を付けて spec.version
を設定することで、バージョンを選択できます。このフィールドを変更するだけで、新しいバージョンに更新できます。
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. IstioCNI リソース
OpenShift Service Mesh Operator を使用する場合、Istio の Container Network Interface (CNI) プラグインのライフサイクルは別に管理されます。Istio の CNI プラグインをインストールするには、IstioCNI
リソースを作成します。
IstioCNI
リソースは、クラスターのすべてのノードで動作するデーモンセットをインストールするため、クラスター全体のリソースです。次の例に示すように、spec.version
フィールドを設定することでバージョンを選択できます。CNI プラグインを更新するには、バージョンフィールドをインストールするバージョンに変更します。Istio
リソースと同様に、istio-cni
チャートで提供されるすべてのオプションを公開する values
フィールドもあります。
IstioCNI
リソースの例
apiVersion: sailoperator.io/v1alpha1 kind: IstioCNI metadata: name: default spec: version: v1.22.3 namespace: istio-cni values: cni: cniConfDir: /etc/cni/net.d excludeNamespaces: - kube-system