Hitachi

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


6.4.6 TP1-Bridgeの要件(通常版かつTP1-Bridge限定)

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒23 TP1-Bridgeの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

規定しません。

ラベル

metadata.labelには次に示すキーを設定します。
  • キー名:app.kubernetes.io/instance

    値:<リリース名>

  • キー名:app.kubernetes.io/managed-by

    値:Helm

  • キー名:app.kubernetes.io/name

    値:<リリース名>

  • キー名:app.kubernetes.io/version

    値:V.R.S1

    備考:バージョン

  • キー名:helm.sh/chart

    値:tp1-bridge-V.R.S1

    備考:<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。
  • キー名:app.kubernetes.io/instance

    値:<リリース名>

  • キー名:app.kubernetes.io/name

    値:<リリース名>

アノテーション

設定しません(デフォルト)。

初期化コンテナ構成

コンテナ構成

レプリカ数

「1」としてください。

再起動ポリシー

コンテナ障害時は必ず再起動(オートヒーリング)してください(Kubernetesのデフォルト設定)。

アップデートストラテジー

規定しません。

Podセキュリティコンテキスト

設定しません。

アクセス制御

Podに対するロールベースアクセス制御(RBAC)で次のとおり対象リソースへのアクセス許可を定義してください。

<Mediator選択機能用ロール>

  • APIグループ

    空(コアグループ)

  • リソース

    services、endpoints

  • アクセス許可

    get、list、watch

これらのアクセス許可を定義するためのKubernetesリソースは、ClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用してください。

<デプロイ依存関係チェック機能用ロール>

  • APIグループ

    空(コアグループ)、apps

  • リソース

    pods、replicasets、deployments、statefulsets、daemonsets

  • アクセス許可

    get、list

これらのアクセス許可を定義するためのKubernetesリソースは、次に示すとおり使い分けてください。

  • TP1-BridgeとTP1-BridgeのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群2のNamespaceがすべて同一の場合:

    Roleリソース、RoleBindingリソース、ServiceAccountリソースを使用してください。

  • TP1-BridgeとTP1-BridgeのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群2のNamespaceが1つでも異なる場合:

    ClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用してください。

ServiceAccountリソースのトークンの自動マウント(automountServiceAccountTokenフィールド)を「有効(true)」にしてください(Kubernetesのデフォルト設定)。

Podの割り当てノードの制御

規定しません。

永続化ボリューム

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームを割り当ててください。

Podライフサイクル設定

terminationGracePeriodSecondsを次のとおり設定してください。

  • 安全な停止待機秒数(terminationGracePeriodSeconds)

    推奨値「330」

注※1

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

注※2

TP1-BridgeのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「表6‒24 TP1-BridgeのDependency-Checkerコンテナの要件」を参照してください。

<制限事項>

スケーリングは不可とします(手動/自動、スケールアウト/インに関係なく)。

コンテナごとの要件を次に示します。

表6‒24 TP1-BridgeのDependency-Checkerコンテナの要件

項目

要件

コマンド

次に示すコマンド引数(args)を設定します。

  • 第1引数(リトライ回数)

    推奨値「30」

  • 第2引数(リトライ間隔秒数)

    推奨値「10」

  • 第3引数(接続タイムアウト秒数)

    推奨値「10」

  • 第4引数(応答タイムアウト秒数)

    推奨値「10」

  • 第5引数以降(ターゲットKubernetesオブジェクト群)

    <対象Kubernetesアプリケーション>

    Mediator、EADS

    例を次に示します。

    (例)

    my-namespace/statefulsets/mediator

    my-namespace/statefulsets/eads-server

(エントリポイントはDependency-Checkerコンテナイメージで「HMP-PCTOのデプロイ依存関係チェックスクリプト(dependency_check.sh)」を設定済みです)

ネットワーク設定

設定しません(デフォルト)。

コンフィグ設定

設定しません(デフォルト)。

コンテナセキュリティコンテキスト

設定しません(デフォルト)。

コンテナライフサイクル設定

設定しません(デフォルト)。

CPU/メモリリソース制限

設定しません(デフォルト)。

表6‒25 TP1-Bridgeコンテナの要件

項目

要件

コマンド

設定しません(デフォルト)。

ネットワーク設定

Kubernetesクラスタ内で次のポートを公開してください(Serviceリソース)。

  • TP1-BridgeのgRPCポート番号(Mediator向け)

    プロトコル:TCP

    公開ポート:TP1-Bridgeのjp.co.Hitachi.soft.hmppcto.tp1.mediator.portパラメタに設定したポート番号

    コンテナポート:TP1-Bridgeのjp.co.Hitachi.soft.hmppcto.tp1.mediator.portパラメタに設定したポート番号

  • TP1-Bridgeのhttpポート番号(ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集、およびAPからのOpenTP1のサービス呼び出し要求の受信用)

    プロトコル:TCP

    公開ポート:TP1-Bridgeのserver.portパラメタに設定したポート番号

    コンテナポート:TP1-Bridgeのserver.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソースに設定してください。

次のとおりファイルを配置します。

  • ファイル:Spring Bootのコンフィグソース

    キー名:application.properties

    マウント先:/deployments/config/application.properties

HMP-PCTOのgRPC通信の暗号化を有効にする場合(Helmチャートのgrpc.useTlsがtrue)、取扱説明書「HMP-PCTO テクニカルガイド」の各プロセスの認証種別ごとに必要となるファイルの一覧に関する説明に示すとおり、gRPC通信機能の暗号化通信で必要となるファイルをコンテナ内にマウントしてください。

次のとおりファイルを配置します。

  • ファイル:接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル

    キー名:ca.crt

    マウント先:/cert/ca.crt

  • ファイル:自サーバ証明書(PEM形式)ファイル

    キー名:server.crt

    マウント先:/cert/server.crt

  • ファイル:自サーバ証明書を作成した秘密鍵ファイル

    キー名:server.key

    マウント先:/cert/server.key

さらに、クライアント認証を行う場合(Helmチャートのgrpc.tls.clientAuth.enabledがtrue)は、次のとおりファイルを配置します。

  • ファイル:自クライアント証明書ファイル(PEM形式)

    キー名:client.crt

    マウント先:/cert/client.crt

  • ファイル:自クライアント証明書を作成した秘密鍵ファイル

    キー名:client.key

    マウント先:/cert/client.key

  • ファイル:接続元クライアント(orchestrator,participant)の秘密鍵が格納されているキーストア(pkcs12またはJKS)ファイル

    キー名:keystore

    マウント先:/cert/keystore

  • ファイル:キーストアファイルのパスワード

    キー名:keystore_password

    マウント先:application.propertiesのjp.co.Hitachi.soft.hmppcto.grpc.tls.server.client-auth.passwordパラメタの値に設定

「TP1-BridgeのgRPC通信機能の暗号化通信用シークレット」をユーザが作成します(「(3) TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成」を参照してください)。

ユーザが作成した「TP1-BridgeのgRPC通信機能の暗号化通信用シークレット」をDeploymentsから参照する際、Helmチャートのgrpc.tls.secretNameパラメタに指定されているSecretオブジェクト名で参照してください。

環境変数TZでタイムゾーンを設定します。ユーザ責務のKubernetesアプリケーションと同じタイムゾーンに設定することを推奨します。デフォルト値は日本標準時(Asia/Tokyo、UTC+09:00)です。

Helmチャートのtimezoneパラメタで、TP1-Bridgeコンテナのタイムゾーンを指定します。

Helmチャートのjava.optionsパラメタで、TP1-BridgeのJavaプロセス起動時にJava VMに渡すオプションを指定してください。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をコンテナ内にマウントしてください。

次のとおりファイルを配置してください。

  • ファイル:uCosminexus Application Runtime with Java for Spring Bootの設定ファイル

    キー名:config.properties

    マウント先:/opt/hitachi/ucars/conf/config.properties

コンテナセキュリティコンテキスト

設定しません(デフォルト)。

コンテナライフサイクル設定

Liveness Probeを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)

    第1引数(リトライ回数):「0」固定(Liveness Probeの設定でリトライするため)

    第2引数(リトライ間隔秒数):「0」固定(Liveness Probeの設定でリトライするため)

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):TP1-Bridgeのserver.portパラメタに設定したポート番号

  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「180」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「30」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「10」

postStartフックを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)

    第1引数(リトライ回数):推奨値「30」

    第2引数(リトライ間隔秒数):推奨値「10」

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):TP1-Bridgeのserver.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)

    第1引数(リトライ回数):推奨値「30」

    第2引数(リトライ間隔秒数):推奨値「10」

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):TP1-Bridgeのserver.portパラメタに設定したポート番号

CPU/メモリリソース制限

実稼働を通して、環境に合わせた設定を実施してください。

表6‒26 TP1-BridgeのFilebeatコンテナの要件

項目

要件

コマンド

次に示すコマンド引数(args)を設定します。

  • 第1引数

    「-e」

    標準エラー出力にログを記録します。syslog/fileへのログ出力を無効化します。

  • 第2引数

    「-E」

    このパラメタ以降に記載された設定を反映した状態で起動します。

  • 第3引数(http.enabled)

    「true」

    HTTPエンドポイントを有効にします。死活監視のために設定を有効化します。

ネットワーク設定

規定しません。

コンフィグ設定

コンテナセキュリティコンテキスト

規定しません。

コンテナライフサイクル設定

Liveness Probeを次のとおり設定してください。
  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「10」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「10」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「5」

Readiness Probeを次のとおり設定してください。
  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「10」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「10」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「5」

CPU/メモリリソース制限

規定しません。

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表6‒27 TP1-BridgeのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

includes/

HelmチャートのConfigMapオブジェクトの設定内容外部化ファイル配置用ディレクトリ

application.properties.tp1

TP1-BridgeのConfigMapオブジェクトの設定内容外部化ファイル

tp1-bridge-config-map-data.yaml

TP1-BridgeのConfigMapオブジェクトの設定内容外部化ファイル

config.properties.tpl

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

ucars-config-map-data.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

filebeat.yml.tpl

FilebeatのConfigMapオブジェクトの設定内容外部化ファイル

filebeat-config-map-data.yaml

FilebeatのConfigMapオブジェクトの設定内容外部化ファイル

eads-config-map-data.yaml

EADSクライアントのConfigMapオブジェクトの設定内容外部化ファイル

hmp-pcto.eads-client.properties.tpl

EADSクライアントのConfigMapオブジェクトの設定内容外部化ファイル

tp1-bridge-config-map.yaml

TP1-BridgeのConfigMapオブジェクトのマニフェスト

ucars-config-map.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトのマニフェスト

filebeat-config-map.yaml

FilebeatのConfigMapオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

deployment.yaml

Deploymentオブジェクトのマニフェスト

eads-config-map.yaml

EADSクライアントのConfigMapオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル