3.2. 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
をサンプルプロジェクトとして使用しますが、サービスメッシュを任意のプロジェクトにデプロイできます。
前提条件
- Red Hat OpenShift Service Mesh のインストールの準備プロセスに従ってください。
-
cluster-admin
ロールを持つアカウント。
3.2.1. OperatorHub からの Operator のインストール
サービスメッシュのインストールプロセスでは、OperatorHub を使用して openshift-operators
プロジェクト内に ServiceMeshControlPlane
カスタムリソース定義をインストールします。Red Hat OpenShift Service Mesh は、コントロールプレーンのデプロイメント、更新、および削除に関連する ServiceMeshControlPlane
を定義し、監視します。
Red Hat OpenShift Service Mesh 1.1.2 以降では、Red Hat OpenShift Service Mesh Operator がコントロールプレーンをインストールするには、Elasticsearch Operator、Jaeger Operator、および Kiali Operator をインストールをする必要があります。
3.2.1.1. Elasticsearch Operator のインストール
コントロールプレーンをインストールするには、Red Hat OpenShift Service Mesh Operator の Elasticsearch Operator をインストールする必要があります。
Operator のコミュニティーバージョンはインストールしないでください。コミュニティー Operator はサポートされていません。
前提条件
- OpenShift Container Platform Web コンソールへのアクセス。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - Elasticsearch とフィルターボックスに入力して、Elasticsearch Operator を検索します。
- Elasticsearch Operator をクリックし、Operator についての情報を表示します。
- Install をクリックします。
-
Create Operator Subscription ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 - Update Channel で最新のバージョンを選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
- Installed Operators ページには、Elasticsearch Operator のインストールの進捗状況が表示されます。
3.2.1.2. Jaeger Operator のインストール
コントロールプレーンをインストールするには、Red Hat OpenShift Service Mesh Operator の Jaeger Operator をインストールする必要があります。
Operator のコミュニティーバージョンはインストールしないでください。コミュニティー Operator はサポートされていません。
前提条件
- OpenShift Container Platform Web コンソールへのアクセス。
- Elasticsearch Operator がインストールされていること。
手順
- 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 を選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
- Subscription Overview ページには、Jaeger Operator のインストールの進捗状況が表示されます。
3.2.1.3. 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 をクリックします。
-
Create Operator Subscription ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 - stable Update Channel を選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
- Subscription Overview ページには、Kiali Operator のインストールの進捗状況が表示されます。
3.2.1.4. 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 についての情報を表示します。
-
Create Operator Subscription ページで、All namespaces on the cluster (default) を選択します。これにより、Operator がデフォルトの
openshift-operators
プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。 - Install をクリックします。
- stable Update Channel を選択します。
Automatic Approval Strategy を選択します。
注記手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。
- Subscribe をクリックします。
- Subscription Overview ページには、Red Hat OpenShift Service Mesh Operator のインストールの進捗状況が表示されます。
3.2.1.5. Red Hat OpenShift Service Mesh コントロールプレーンのデプロイ
ServiceMeshControlPlane
リソースは、インストール時に使用される設定を定義します。Red Hat が提供するデフォルト設定をデプロイするか、またはビジネスのニーズに合わせて ServiceMeshControlPlane
ファイルをカスタマイズすることができます。
Web コンソールを使用するか、または oc
クライアントツールを使用してコマンドラインからサービスメッシュコントロールプレーンをデプロイすることができます。
3.2.1.5.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 が作成し、設定したもの) を表示します。
3.2.1.5.2. CLI からのコントロールプレーンのデプロイ
以下の手順に従って、CLI を使用して Red Hat OpenShift Service Mesh コントロールプレーンをデプロイします。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされていること。
- Red Hat OpenShift Service Mesh のインストールのカスタマイズ方法についての手順を確認します。
-
cluster-admin
ロールを持つアカウント。 -
oc
として知られる OpenShift Container Platform コマンドラインインターフェース (CLI) にアクセスします。
手順
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 0/1 Running 0 22h prometheus-6dff867c97-gr2n5 2/2 Running 0 28h
マルチテナントインストールでは、Red Hat OpenShift Service Mesh はクラスター内で複数の独立したコントロールプレーンをサポートします。ServiceMeshControlPlane
テンプレートを使用すると、再利用可能な設定を作成することができます。詳しい情報は、「コントロールプレーンのテンプレートの作成」を参照してください。
3.2.1.6. Red Hat OpenShift Service Mesh メンバーロールの作成
ServiceMeshMemberRoll
は、コントロールプレーンに属するプロジェクトを一覧表示します。ServiceMeshMemberRoll
に一覧表示されているプロジェクトのみがコントロールプレーンの影響を受けます。プロジェクトは、特定のコントロールプレーンのデプロイメント用にメンバーロールに追加するまでサービスメッシュに属しません。
ServiceMeshControlPlane
と同じプロジェクトに、 default
という名前の ServiceMeshMemberRoll
リソースを作成する必要があります。
メンバープロジェクトは、サービスメッシュコントロールプレーンのインストールが成功した場合にのみ更新されます。
3.2.1.6.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 を保存します。
3.2.1.6.2. CLI からのメンバーロールの作成
以下の手順に従って、コマンドラインからプロジェクトを ServiceMeshMemberRoll
に追加します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
インストールされた
ServiceMeshControlPlane
の場所。 - サービスメッシュに追加するプロジェクトの一覧。
-
oc
として知られる OpenShift Container Platform コマンドラインインターフェース (CLI) にアクセスします。
手順
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
リソースしか属することができません。
3.2.1.6.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
3.2.1.7. サービスメッシュからのプロジェクトの追加または削除
以下の手順に従って、Web コンソールを使用して既存の Service Mesh ServiceMeshMemberRoll
リソースを変更します。
-
任意の数のプロジェクトを追加できますが、プロジェクトは単一の
ServiceMeshMemberRoll
リソースしか属することができません。 -
ServiceMeshMemberRoll
リソースは、対応するServiceMeshControlPlane
リソースが削除されると削除されます。
3.2.1.7.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 をクリックします。
3.2.1.7.2. CLI からのメンバーロールの変更
以下の手順に従って、コマンドラインを使用して既存の Service Mesh Member Roll を変更します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
既存の
ServiceMeshMemberRoll
リソース。 -
ServiceMeshMemberRoll
リソースを持つプロジェクトの名前。 - メッシュに/から追加または削除するプロジェクトの名前。
-
oc
として知られる OpenShift Container Platform コマンドラインインターフェース (CLI) にアクセスします。
手順
- 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
3.2.1.8. Red Hat OpenShift Service Mesh メンバーロールの削除
ServiceMeshMemberRoll
リソースは、関連付けられた ServiceMeshControlPlane
リソースを削除する際に自動的に削除されます。
3.2.2. アプリケーション Pod の更新
Operator をインストールする際に Automatic Approval Strategy を選択した場合には、Operator はコントロールプレーンを自動的に更新しますが、アプリケーションを更新しません。既存のアプリケーションは、引き続きメッシュの一部になり、それに応じて機能します。アプリケーション管理者は、サイドカーコンテナーをアップグレードするためにアプリケーションを再起動する必要があります。
デプロイメントで自動のサイドカーコンテナー挿入を使用する場合、アノテーションを追加または変更してデプロイメントの Pod テンプレートを更新することができます。以下のコマンドを実行して Pod を再デプロイします。
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
デプロイメントで自動のサイドカーコンテナー挿入を使用しない場合、デプロイメントまたは Pod で指定されたサイドカーコンテナーイメージを変更してサイドカーコンテナーを手動で更新する必要があります。
次のステップ
- Red Hat OpenShift Service Mesh インストールをカスタマイズします。
- Red Hat OpenShift Service Mesh でアプリケーションをデプロイする準備をします。