2.6.2 Kubernetesコントロールプレーンでの作業
- 〈この項の構成〉
(1) 各種資材の配置
Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。
|
資材 |
備考 |
|---|---|
|
OrchestratorのKubernetesマニフェスト |
|
|
Entity-ServiceのKubernetesマニフェスト |
|
|
ParticipantのKubernetesマニフェスト |
「2.5.5 SQL-ParticipantのKubernetesマニフェストの作成(SQL-Participant限定)」、「2.5.4 TCC-ParticipantのKubernetesマニフェストの作成(TCC-Participant限定)」で作成したもの |
|
Participantが使用するDB/外部サービスのKubernetesマニフェスト |
ユーザが適宜作成したもの |
|
Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェスト |
「2.5.6 Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの |
|
デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェスト |
「2.5.7 デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの 次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。
|
|
uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト(通常版限定) |
通常版の場合だけ実施します。次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。
|
(2) Namespaceの作成
HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。
-
ユーザ責務のKubernetesアプリケーション
-
HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション
詳細については、「(2) Namespaceの作成」を参照してください。
(3) Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成
HMP-PCTOのgRPC通信機能で暗号化通信を行う場合だけ実施します。
Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。
|
対象Kubernetesアプリケーション |
ファイル |
備考 |
|---|---|---|
|
Orchestrator |
接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル |
必ず準備します。 |
|
自クライアント証明書ファイル(PEM形式) |
クライアント認証を行う場合だけ準備します。 |
|
|
自クライアント証明書を作成した秘密鍵ファイル |
クライアント認証を行う場合だけ準備します。 |
|
|
Participant※ |
接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル |
必ず準備します。 |
|
自サーバ証明書(PEM形式)ファイル |
必ず準備します。 |
|
|
自サーバ証明書を作成した秘密鍵ファイル |
必ず準備します。 |
|
|
自クライアント証明書ファイル(PEM形式) |
クライアント認証を行う場合だけ準備します。 |
|
|
自クライアント証明書を作成した秘密鍵ファイル |
クライアント認証を行う場合だけ準備します。 |
|
|
接続元クライアント(Orchestrator、Participant)の秘密鍵が格納されているキーストア(pkcs12、またはJKS)ファイル |
クライアント認証を行う場合だけ準備します。 |
- 注※
-
Participantアプリケーションの数だけ準備してください。
HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。
クライアント認証を行わない場合
<任意のパス>/
ca.crt # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
participant/
server.crt # Participantの自サーバ証明書(PEM形式)ファイル
server.key # Participantの自サーバ証明書を作成した秘密鍵ファイルクライアント認証を行う場合
<任意のパス>/
ca.crt # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
orchestrator/
client.crt # Orchestratorの自クライアント証明書ファイル(PEM形式)
client.key # Orchestratorの自クライアント証明書を作成した秘密鍵ファイル
participant/
server.crt # Participantの自サーバ証明書(PEM形式)ファイル
server.key # Participantの自サーバ証明書を作成した秘密鍵ファイル
client.crt # Participantの自クライアント証明書ファイル(PEM形式)
client.key # Participantの自クライアント証明書を作成した秘密鍵ファイル
keystore.jks # Participantの接続元クライアント(Orchestrator,Participant)の秘密鍵が格納されている
# キーストア(pkcs12またはJKS)ファイル準備したファイルを使用してOrchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットを作成します。
ユーザ責務のKubernetesアプリケーションであるOrchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットは、ユーザ要件に合わせて作成してください。
Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットを作成するコマンド例を次に示します。
ユーザ責務のKubernetesアプリケーションである、Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成コマンドの一例です。ユーザ要件に合わせて作成してください。
-
Orchestrator用シークレット名:「orchestrator-secret」
-
Participant用シークレット名:「participant-secret」
-
HMP-PCTOのKubernetesアプリケーションをデプロイするNamespace:「my-namespace」
クライアント認証を行わない場合
kubectl create secret generic --save-config orchestrator-secret \ --from-file=ca.crt=./ca.crt \ -n my-namespace kubectl create secret generic --save-config participant-secret \ --from-file=ca.crt=./ca.crt \ --from-file=server.crt=./participant/server.crt \ --from-file=server.key=./participant/server.key \ -n my-namespace
クライアント認証を行う場合
kubectl create secret generic --save-config orchestrator-secret \ --from-file=ca.crt=./ca.crt \ --from-file=server.crt=./orchestrator/server.crt \ --from-file=server.key=./orchestrator/server.key \ -n my-namespace kubectl create secret generic --save-config participant-secret \ --from-file=ca.crt=./ca.crt \ --from-file=server.crt=./participant/server.crt \ --from-file=server.key=./participant/server.key \ --from-file=client.crt=./participant/client.crt \ --from-file=client.key=./participant/client.key \ --from-file=keystore=./participant/keystore.jks \ --from-literal=keystore_password=changeit \ -n my-namespace
<コマンドの実行結果の例>
secret/orchestrator-secret created secret/participant-secret created
このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。
(4) Mediator選択機能用ロールおよびロールバインディングのデプロイ
「(1) 各種資材の配置」で配置したMediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。
コマンド例を次に示します。
kubectl apply -f ./lb-role.yaml
この例では、Kubernetesマニフェストのファイル名を「lb-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。
もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。
<コマンドの実行結果の例>
clusterrole.rbac.authorization.k8s.io/lb-role created clusterrolebinding.rbac.authorization.k8s.io/lb-role-binding created
このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。
(5) デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ
「(1) 各種資材の配置」で配置したデプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。
-
ユーザ責務のKubernetesアプリケーション
-
HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション
詳細については、「(11) デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ」を参照してください。
(6) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成(通常版限定)
uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを下記要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。
-
ユーザ責務のKubernetesアプリケーション
-
HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション
詳細については、「(15) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成(通常版限定)」を参照してください。
(7) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ(通常版限定)
「(1) 各種資材の配置」で配置したuCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。
-
ユーザ責務のKubernetesアプリケーション
-
HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション
詳細については、「(16) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ(通常版限定)」を参照してください。
(8) ユーザ責務のKubernetesアプリケーションのデプロイ
「(1) 各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストをデプロイしてください。
なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。
-
Elasticsearch
-
Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat
-
Mediator、EADS(通常版だけ)、Ext-Cons(トライアル版だけ)、Participantが使用するDB/外部サービス
-
Participant
-
Orchestrator
- 上記以外の順序でデプロイした場合
-
各Kubernetesアプリケーションの初期化コンテナとして構成しているDependency-Checkerコンテナで、上記のとおり依存するKubernetesアプリケーションが先にデプロイされるまで待機します。待機処理がリトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。その場合は、Dependency-Checkerコンテナが実行しているデプロイ依存関係チェックスクリプトのエラーメッセージに従い対処してください。
ユーザ責務のKubernetesアプリケーションは、ユーザ任意の方法でデプロイしてください。
kubectlコマンドでデプロイするコマンド例を次に示します。
kubectl apply -f ./orchestrator.yaml
この例では、Kubernetesマニフェストのファイル名を「orchestrator.yaml」としています。また、各ファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。
もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。
<コマンドの実行結果の例>
service/orchestrator created serviceaccount/orchestrator-service-account created deployment.apps/orchestrator created configmap/orchestrator-config created configmap/orchestrator-ucars-config created configmap/orchestrator-filebeat-sidecar-config created
このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。
HMP-PCTOの各Kubernetesアプリケーションをデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり起動していること(STATUS列が"Running"になっていることや、NODE列でPodが意図したワーカーノードに割り当てられていることなど)を確認してください。
kubectl get pods -n my-namespace -o wide
<コマンドの実行結果の例(SQL-Participantを使用する場合)>
<コマンドの実行結果の例(TCC-Participantを使用する場合)>
なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトの詳細な情報を参照できます。
(9) ユーザ責務のKubernetesアプリケーションのアンデプロイ
デプロイしたHMP-PCTOの各Kubernetesアプリケーションをアンデプロイする方法について説明します。
なお、HMP-PCTOの各Kubernetesアプリケーションは、次の順序でアンデプロイする必要があります。
-
Orchestrator
-
Participant
-
Mediator、EADS(通常版だけ)、Ext-Cons(トライアル版だけ)、Participantが使用するDB/外部サービス
-
Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat
-
Elasticsearch
- 重要
-
上記以外の順序でアンデプロイした場合に発生する問題
上記以外の順序でアンデプロイした場合、トラブルシュートに必要な情報が収集できなかったり、処理中のトランザクションが適切に終了しなかったりなどの問題が発生するおそれがあります。
ユーザ責務のKubernetesアプリケーションは、ユーザ任意の方法でアンデプロイしてください。
kubectlコマンドでアンデプロイするコマンド例を次に示します。
kubectl delete -f ./orchestrator.yaml
- 重要
-
「--grace-period=0 --force」オプションの指定について
Kubernetesオブジェクトをすぐに削除する「--grace-period=0 --force」オプションは指定しないでください。このオプションを指定してKubernetesオブジェクトを削除した場合、トランザクション結果が不整合になるおそれがあります。
この例では、Kubernetesマニフェストのファイル名を「orchestrator.yaml」としています。また、各ファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。
もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけアンデプロイのコマンドを実行してください。
<コマンドの実行結果の例>
service/orchestrator deleted serviceaccount/orchestrator-service-account deleted deployment.apps/orchestrator deleted configmap/orchestrator-config deleted configmap/orchestrator-ucars-config deleted configmap/orchestrator-filebeat-sidecar-config deleted
このように、各Kubernetesオブジェクトの削除に成功したメッセージが出力されていることを確認してください。
HMP-PCTOの各Kubernetesアプリケーションをアンデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり停止していること(一覧に出力されないこと)を確認してください。
kubectl get pods -n my-namespace -o wide
<コマンドの実行結果の例>
No resources found in my-namespace namespace.