Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.6.2 Kubernetesコントロールプレーンでの作業

〈この項の構成〉

(1) 各種資材の配置

Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。

表2‒16 Kubernetesコントロールプレーンに配置する資材の一覧

資材

備考

OrchestratorのKubernetesマニフェスト

2.5.2 OrchestratorのKubernetesマニフェストの作成」で作成したもの

Entity-ServiceのKubernetesマニフェスト

2.5.3 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アプリケーションをデプロイするための作業時に配置します。

  • ユーザ責務のKubernetesアプリケーション

  • HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト(通常版限定)

2.5.8 uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成(通常版限定)」で作成したもの

通常版の場合だけ実施します。次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。

  • ユーザ責務のKubernetesアプリケーション

  • HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

(2) Namespaceの作成

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

詳細については、「(2) Namespaceの作成」を参照してください。

(3) Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成

HMP-PCTOのgRPC通信機能で暗号化通信を行う場合だけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。

表2‒17 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通信機能の暗号化通信用シークレットの作成コマンドの一例です。ユーザ要件に合わせて作成してください。

クライアント認証を行わない場合

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アプリケーションをデプロイするための作業時に実施します。

詳細については、「(11) デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ」を参照してください。

(6) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成(通常版限定)

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを下記要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかの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アプリケーションをデプロイするための作業時に実施します。

詳細については、「(16) uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ(通常版限定)」を参照してください。

(8) ユーザ責務のKubernetesアプリケーションのデプロイ

(1) 各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストをデプロイしてください。

なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。

  1. Elasticsearch

  2. Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

  3. Mediator、EADS(通常版だけ)、Ext-Cons(トライアル版だけ)、Participantが使用するDB/外部サービス

  4. Participant

  5. 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アプリケーションは、次の順序でアンデプロイする必要があります。

  1. Orchestrator

  2. Participant

  3. Mediator、EADS(通常版だけ)、Ext-Cons(トライアル版だけ)、Participantが使用するDB/外部サービス

  4. Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

  5. 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.