1.7. Red Hat OpenShift Service Mesh のインストール
サービスメッシュのインストールには、Elasticsearch、Jaeger、Kiali、Service Mesh Operator のインストール、コントロールプレーンをデプロイするための ServiceMeshControlPlane
リソースの作成および管理、サービスメッシュに関連する namespace を指定するための ServiceMeshMemberRoll
リソースの作成が含まれます。
Mixer のポリシーの適用はデフォルトで無効にされています。ポリシータスクを実行するには、これを有効にする必要があります。Mixer ポリシーの適用を有効にする方法については、「Mixer ポリシーの適用の更新」を参照してください。
マルチテナントコントロールプレーンのインストールは、Red Hat OpenShift Service Mesh 1.0 以降のデフォルト設定です。
サービスメッシュに関するドキュメントは istio-system
をサンプルプロジェクトとして使用しますが、サービスメッシュを任意のプロジェクトにデプロイできます。
1.7.1. 前提条件
- 「Red Hat OpenShift Service Mesh のインストールの準備」のプロセスに従ってください。
-
cluster-admin
ロールを持つアカウントが必要です。
サービスメッシュのインストールプロセスでは、OperatorHub を使用して openshift-operators
プロジェクト内に ServiceMeshControlPlane
カスタムリソース定義をインストールします。Red Hat OpenShift Service Mesh は、コントロールプレーンのデプロイメント、更新、および削除に関連する ServiceMeshControlPlane
を定義し、監視します。
Red Hat OpenShift Service Mesh 1.1.10 以降では、Red Hat OpenShift Service Mesh Operator がコントロールプレーンをインストールする前に、Elasticsearch Operator、Jaeger Operator、および Kiali Operator をインストールする必要があります。
1.7.2. Elasticsearch Operator のインストール
デフォルトの Jaeger デプロイメントはインメモリーストレージを使用します。それは、Jaeger の評価、デモの提供、またはテスト環境での Jaeger の使用を目的としてすぐにインストールできるように設計されているためです。実稼働環境で Jaeger を使用する予定がある場合、永続ストレージのオプション (この場合は Elasticsearch) をインストールする必要があります。
前提条件
- OpenShift Container Platform Web コンソールへのアクセスが可能です。
-
cluster-admin
ロールを持つアカウントが必要です。
Operator のコミュニティーバージョンはインストールしないでください。コミュニティー Operator はサポートされていません。
OpenShift クラスターロギングの一部として Elasticsearch Operator がすでにインストールされている場合、Elasticsearch Operator を再びインストールする必要はありません。Jaeger Operator はインストールされた Elasticsearch Operator を使用して Elasticsearch インスタンスを作成します。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 -
Operators
OperatorHub に移動します。 - Elasticsearch とフィルターボックスに入力して、Elasticsearch Operator を検索します。
- Red Hat が提供する Elasticsearch Operator をクリックし、Operator についての情報を表示します。
- Install をクリックします。
- Create Operator Subscription ページで A specific namespace on the cluster オプションを選択し、メニューから openshift-operators-redhat を選択します。
- OpenShift Container Platform インストールに一致する Update Channel を選択します。たとえば、OpenShift Container Platform バージョン 4.5 にインストールしている場合は、4.5 更新チャネルを選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
-
Installed Operators ページで、
openshift-operators-redhat
プロジェクトを選択します。Elasticsearch Operator が「InstallSucceeded」のステータスを表示するまで待機してから続行します。
1.7.3. Jaeger Operator のインストール
Jaeger をインストールするには、OperatorHub を使用して Jaeger Operator をインストールします。
デフォルトで、Operator は openshift-operators
プロジェクトにインストールされます。
前提条件
- OpenShift Container Platform Web コンソールへのアクセスが可能です。
-
cluster-admin
ロールを持つアカウントが必要です。 - 永続ストレージが必要な場合、Jaeger Operator をインストールする前に Elasticsearch Operator もインストールする必要があります。
Operator のコミュニティーバージョンはインストールしないでください。コミュニティー Operator はサポートされていません。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 -
Operators
OperatorHub に移動します。 - Jaeger とフィルターに入力して、Jaeger Operator を検索します。
- Red Hat が提供する Jaeger Operator をクリックし、Operator についての情報を表示します。
- Install をクリックします。
-
Create Operator Subscription ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 stable Update Channel を選択します。これにより、新しいバージョンがリリースされると Jaeger が自動的に更新されます。1.17-stable などのメンテナンスチャネルを選択すると、そのバージョンのサポートサイクルの期間、バグ修正およびセキュリティーパッチが送信されます。
Approval Strategy を選択します。Automatic または Manual の更新を選択できます。インストールされた Operator について自動更新を選択する場合、Operator の新規バージョンが利用可能になると、Operator Lifecycle Manager (OLM) は人の介入なしに、Operator の実行中のインスタンスを自動的にアップグレードします。手動更新を選択する場合、Operator の新規バージョンが利用可能になると、OLM は更新要求を作成します。クラスター管理者は、Operator が新規バージョンに更新されるように更新要求を手動で承認する必要があります。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
-
Subscription Overview ページで、
openshift-operators
プロジェクトを選択します。Jaeger Operator に「InstallSucceeded」のステータスが表示されるまで待機してから続行します。
1.7.4. Kiali Operator のインストール
コントロールプレーンをインストールするには、Red Hat OpenShift Service Mesh Operator の Kiali Operator をインストールする必要があります。
Operator のコミュニティーバージョンはインストールしないでください。コミュニティー Operator はサポートされていません。
前提条件
- OpenShift Container Platform Web コンソールへのアクセスが可能です。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - Kiali とフィルターボックスに入力して、Kiali Operator を検索します。
- Red Hat が提供する Kiali Operator をクリックし、Operator についての情報を表示します。
- Install をクリックします。
-
Install Operator ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 - stable Update Channel を選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Install をクリックします。
- Installed Operators ページには、Kiali Operator のインストールの進捗状況が表示されます。
1.7.5. Red Hat OpenShift Service Mesh Operator のインストール
前提条件
- OpenShift Container Platform Web コンソールへのアクセスが可能です。
- Elasticsearch Operator がインストールされている必要があります。
- Jaeger Operator がインストールされている必要があります。
- Kiali Operator がインストールされている必要があります。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - Red Hat OpenShift Service Mesh とフィルターボックスに入力して、Red Hat OpenShift Service Mesh Operator を検索します。
- Red Hat OpenShift Service Mesh Operator をクリックし、Operator についての情報を表示します。
-
Install Operator ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 - Install をクリックします。
- stable Update Channel を選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Install をクリックします。
- Installed Operators ページには、Red Hat OpenShift Service Mesh Operator のインストールの進捗状況が表示されます。
1.7.6. Red Hat OpenShift Service Mesh コントロールプレーンのデプロイ
ServiceMeshControlPlane
リソースは、インストール時に使用される設定を定義します。Red Hat が提供するデフォルト設定をデプロイするか、またはビジネスのニーズに合わせて ServiceMeshControlPlane
ファイルをカスタマイズすることができます。
Web コンソールを使用するか、または oc
クライアントツールを使用してコマンドラインからサービスメッシュコントロールプレーンをデプロイすることができます。
1.7.6.1. Web コンソールを使用したコントロールプレーンのデプロイ
以下の手順に従って、Web コンソールを使用して Red Hat OpenShift Service Mesh コントロールプレーンをデプロイします。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている必要があります。
- Red Hat OpenShift Service Mesh のインストールのカスタマイズ方法についての手順を確認します。
-
cluster-admin
ロールを持つアカウントが必要です。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 istio-system
という名前のプロジェクトを作成します。-
Home
Projects に移動します。 - Create Project をクリックします。
-
Name フィールドに
istio-system
を入力します。 - Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 -
必要な場合は、Project メニューから
istio-system
を選択します。Operator が新規プロジェクトにコピーされるまでに数分待機する必要がある場合があります。 Red Hat OpenShift Service Mesh Operator をクリックします。Provided APIs の下に、Operator は 2 つのリソースタイプを作成するためのリンクを提供します。
-
ServiceMeshControlPlane
リソース -
ServiceMeshMemberRoll
リソース
-
- Istio Service Mesh Control Plane で Create ServiceMeshControlPlane をクリックします。
Create Service Mesh Control Plane ページで、必要に応じてデフォルト
ServiceMeshControlPlane
テンプレートの YAML を変更します。注記コントロールプレーンのカスタマイズについての詳細は、Red Hat OpenShift Service Mesh インストールのカスタマイズについて参照してください。実稼働環境の場合は、デフォルトの Jaeger テンプレートを変更する 必要 があります。
- Create をクリックしてコントロールプレーンを作成します。Operator は、設定パラメーターに基づいて Pod、サービス、サービスメッシュコントロールプレーンのコンポーネントを作成します。
- Istio Service Mesh Control Plane タブをクリックします。
- 新規コントロールプレーンの名前をクリックします。
- Resources タブをクリックして、Red Hat OpenShift Service Mesh コントロールプレーンリソース (Operator が作成し、設定したもの) を表示します。
1.7.6.2. CLI からのコントロールプレーンのデプロイ
以下の手順に従って、CLI を使用して Red Hat OpenShift Service Mesh コントロールプレーンをデプロイします。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている必要があります。
- Red Hat OpenShift Service Mesh のインストールのカスタマイズ方法についての手順を確認します。
-
cluster-admin
ロールを持つアカウントが必要です。 -
OpenShift CLI (
oc
) へのアクセスが可能です。
手順
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。$ oc login https://{HOSTNAME}:6443
istio-system
という名前のプロジェクトを作成します。$ oc new-project istio-system
-
「Customize the Red Hat OpenShift Service Mesh installation」にある例を使用して、
istio-installation.yaml
という名前のServiceMeshControlPlane
ファイルを作成します。必要に応じて値をカスタマイズして、ユースケースに合わせて使用することができます。実稼働デプロイメントの場合は、デフォルトの Jaeger テンプレートを変更する 必要 があります。 以下のコマンドを実行してコントロールプレーンをデプロイします。
$ oc create -n istio-system -f istio-installation.yaml
以下のコマンドを実行して、コントロールプレーンのインストールのステータスを確認します。
$ oc get smcp -n istio-system
READY 列が true の場合、インストールは正常に終了しています。
NAME READY basic-install True
以下のコマンドを実行して、インストールプロセス時の Pod の進捗を確認します。
$ oc get pods -n istio-system -w
以下のような出力が表示されるはずです。
出力例
NAME READY STATUS RESTARTS AGE grafana-7bf5764d9d-2b2f6 2/2 Running 0 28h istio-citadel-576b9c5bbd-z84z4 1/1 Running 0 28h istio-egressgateway-5476bc4656-r4zdv 1/1 Running 0 28h istio-galley-7d57b47bb7-lqdxv 1/1 Running 0 28h istio-ingressgateway-dbb8f7f46-ct6n5 1/1 Running 0 28h istio-pilot-546bf69578-ccg5x 2/2 Running 0 28h istio-policy-77fd498655-7pvjw 2/2 Running 0 28h istio-sidecar-injector-df45bd899-ctxdt 1/1 Running 0 28h istio-telemetry-66f697d6d5-cj28l 2/2 Running 0 28h jaeger-896945cbc-7lqrr 2/2 Running 0 11h kiali-78d9c5b87c-snjzh 1/1 Running 0 22h prometheus-6dff867c97-gr2n5 2/2 Running 0 28h
マルチテナントインストールでは、Red Hat OpenShift Service Mesh はクラスター内で複数の独立したコントロールプレーンをサポートします。ServiceMeshControlPlane
テンプレートを使用すると、再利用可能な設定を作成することができます。詳細は、「コントロールプレーンのテンプレートの作成」を参照してください。
1.7.7. Red Hat OpenShift Service Mesh メンバーロールの作成
ServiceMeshMemberRoll
は、コントロールプレーンに属するプロジェクトを一覧表示します。ServiceMeshMemberRoll
に一覧表示されているプロジェクトのみがコントロールプレーンの影響を受けます。プロジェクトは、特定のコントロールプレーンのデプロイメント用にメンバーロールに追加するまでサービスメッシュに属しません。
ServiceMeshControlPlane
と同じプロジェクトに、 default
という名前の ServiceMeshMemberRoll
リソースを作成する必要があります。
メンバープロジェクトは、サービスメッシュコントロールプレーンのインストールが成功した場合にのみ更新されます。
1.7.7.1. Web コンソールからのメンバーロールの作成
以下の手順に従って、Web コンソールを使用して 1 つ以上のプロジェクトを Service Mesh Member Roll に追加します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
インストールされた
ServiceMeshControlPlane
の場所。 - サービスメッシュに追加する既存プロジェクトの一覧。
手順
メッシュのプロジェクトがない場合や、ゼロから作業を開始する場合は、プロジェクトを作成します。これは
istio-system
とは異なるものである必要があります。-
Home
Projects に移動します。 - Name フィールドに名前を入力します。
- Create をクリックします。
-
Home
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、一覧から
ServiceMeshControlPlane
がデプロイされているプロジェクト (例:istio-system
) を選択します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- All Instances タブをクリックします。
Create New をクリックしてから Create Istio Service Mesh Member Roll を選択します。
注記Operator がリソースのコピーを終了するまでに少し時間がかかる場合があります。そのため、Create Istio Service Mesh Member Roll ボタンが表示されるように画面を更新する必要がある場合があります。
-
Create Service Mesh Member Roll ページで、YAML を変更してプロジェクトをメンバーとして追加します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一 の
ServiceMeshMemberRoll
リソースしか属することができません。 - Create をクリックして、Service Mesh Member Roll を保存します。
1.7.7.2. CLI からのメンバーロールの作成
以下の手順に従って、コマンドラインからプロジェクトを ServiceMeshMemberRoll
に追加します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
インストールされた
ServiceMeshControlPlane
の場所。 - サービスメッシュに追加するプロジェクトの一覧。
-
OpenShift CLI (
oc
) へのアクセスが可能です。
手順
OpenShift Container Platform CLI にログインします。
$ oc login
istio-system
の例では、ServiceMeshMemberRoll
リソースをServiceMeshControlPlane
リソースと同じプロジェクトに作成します。リソースの名前はdefault
にする必要があります。$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: # a list of projects joined into the service mesh - your-project-name - another-project-name
-
デフォルトの YAML を変更して、プロジェクトを
members
として追加します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一 のServiceMeshMemberRoll
リソースしか属することができません。
1.7.7.3. Red Hat OpenShift Service Mesh メンバーの作成
ServiceMeshMember
リソースは、ServiceMeshMemberRoll
にメンバーを直接追加する特権を持たないサービスメッシュユーザーが作成できます。プロジェクト管理者にはプロジェクトで ServiceMeshMember
リソースを作成するためのパーミッションが自動的に付与されますが、サービスメッシュ管理者がサービスメッシュへのアクセスを明示的に付与するまで、これらのプロジェクト管理者はこれを ServiceMeshControlPlane
にポイントすることはできません。管理者は、以下のようにユーザーに mesh-user
ユーザーロールを付与してメッシュにアクセスするパーミッションをユーザーに付与できます。
$ oc policy add-role-to-user -n <control-plane-namespace> --role-namespace <control-plane-namespace> mesh-user <user-name>.
管理者はコントロールプレーンプロジェクトで mesh user
ロールバインディングを変更し、アクセスが付与されたユーザーおよびグループを指定できます。ServiceMeshMember
は、プロジェクトをそれが参照するコントロールプレーンプロジェト内の ServiceMeshMemberRoll
に追加します。
apiVersion: maistra.io/v1 kind: ServiceMeshMember metadata: name: default spec: controlPlaneRef: namespace: control-plane-namespace name: minimal-install
mesh-users ロールバインディングは、管理者が ServiceMeshControlPlane
リソースを作成した後に自動的に作成されます。管理者は以下のコマンドを使用してロールをユーザーに追加できます。
$ oc policy add-role-to-user
管理者は、ServiceMeshControlPlane
リソースを作成する前に、mesh-user
ロールバインディングを作成することもできます。たとえば、管理者は ServiceMeshControlPlane
リソースと同じ oc apply
操作でこれを作成できます。
この例では、alice
のロールバインディングを追加します。
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: control-plane-namespace name: mesh-users roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mesh-user subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: alice
1.7.8. サービスメッシュからのプロジェクトの追加または削除
以下の手順に従って、Web コンソールを使用して既存の Service Mesh ServiceMeshMemberRoll
リソースを変更します。
-
任意の数のプロジェクトを追加できますが、プロジェクトは 単一 の
ServiceMeshMemberRoll
リソースしか属することができません。 -
ServiceMeshMemberRoll
リソースは、対応するServiceMeshControlPlane
リソースが削除されると削除されます。
1.7.8.1. Web コンソールからのメンバーロールの変更
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
既存の
ServiceMeshMemberRoll
リソース。 -
ServiceMeshMemberRoll
リソースを持つプロジェクトの名前。 - メッシュに/から追加または削除するプロジェクトの名前。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、一覧から
ServiceMeshControlPlane
がデプロイされているプロジェクト (例:istio-system
) を選択します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Member Roll タブをクリックします。
-
default
リンクをクリックします。 - YAML タブをクリックします。
-
YAML を変更して、プロジェクトをメンバーとして追加または削除します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一 の
ServiceMeshMemberRoll
リソースしか属することができません。 - Save をクリックします。
- Reload をクリックします。
1.7.8.2. CLI からのメンバーロールの変更
以下の手順に従って、コマンドラインを使用して既存の Service Mesh Member Roll を変更します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
既存の
ServiceMeshMemberRoll
リソース。 -
ServiceMeshMemberRoll
リソースを持つプロジェクトの名前。 - メッシュに/から追加または削除するプロジェクトの名前。
-
OpenShift CLI (
oc
) へのアクセスが可能です。
手順
- OpenShift Container Platform CLI にログインします。
ServiceMeshMemberRoll
リソースを編集します。$ oc edit smmr -n <controlplane-namespace>
YAML を変更して、プロジェクトをメンバーとして追加または削除します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一 の
ServiceMeshMemberRoll
リソースしか属することができません。apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: # a list of projects joined into the service mesh - your-project-name - another-project-name
1.7.9. 手動更新
手動で更新することを選択する場合、Operator Lifecycle Manager (OLM) は、クラスター内の Operator のインストール、アップグレード、ロールベースのアクセス制御 (RBAC) を制御します。OLM はデフォルトで OpenShift Container Platform で実行されます。OLM は CatalogSource を使用します。これは Operator Registry API を使用して利用可能な Operator やインストールされた Operator のアップグレードについてクエリーします。
- OpenShift Container Platform のアップグレードの処理方法についての詳細は、Operator Lifecycle Manager のドキュメントを参照してください。
1.7.9.1. アプリケーション Pod の更新
Operator をインストールする際に Automatic Approval Strategy を選択した場合には、Operator はコントロールプレーンを自動的に更新しますが、アプリケーションを更新しません。既存のアプリケーションは、引き続きメッシュの一部になり、それに応じて機能します。アプリケーション管理者は、サイドカーコンテナーをアップグレードするためにアプリケーションを再起動する必要があります。
デプロイメントで自動のサイドカーコンテナー挿入を使用する場合、アノテーションを追加または変更してデプロイメントの Pod テンプレートを更新することができます。以下のコマンドを実行して Pod を再デプロイします。
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
デプロイメントで自動のサイドカーコンテナー挿入を使用しない場合、デプロイメントまたは Pod で指定されたサイドカーコンテナーイメージを変更してサイドカーコンテナーを手動で更新する必要があります。